From 634ce89f6e6d582fc15beb868ca99bab7ee26405 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Wed, 7 Dec 2022 17:04:58 +0100 Subject: [PATCH 01/73] first commit --- .identity/.terraform.lock.hcl | 41 + .identity/00_locals.tf | 128 + .identity/00_main.tf | 29 + .identity/00_main.tf.ci | 22 + .identity/00_variables.tf | 0 .identity/01_data.tf | 3 + .identity/02_application_main.tf | 28 + .identity/02_application_main_auth.tf | 18 + .identity/02_application_pullrequest.tf | 28 + .identity/02_application_pullrequest_auth.tf | 18 + .identity/99_outputs.tf | 7 + .opex/config.yaml | 8 + azure-dashboard-raw/azure_dashboard_raw.json | 9009 ++++++++++++++ azure-dashboard/.terraform-version | 1 + azure-dashboard/01_opex.tf | 11044 +++++++++++++++++ azure-dashboard/99_main.tf | 16 + azure-dashboard/99_variables.tf | 26 + azure-dashboard/env/prod/backend.ini | 1 + azure-dashboard/env/prod/backend.tfvars | 4 + azure-dashboard/env/prod/terraform.tfvars | 10 + azure-dashboard/terraform.sh | 63 + 21 files changed, 20504 insertions(+) create mode 100644 .identity/.terraform.lock.hcl create mode 100644 .identity/00_locals.tf create mode 100644 .identity/00_main.tf create mode 100644 .identity/00_main.tf.ci create mode 100644 .identity/00_variables.tf create mode 100644 .identity/01_data.tf create mode 100644 .identity/02_application_main.tf create mode 100644 .identity/02_application_main_auth.tf create mode 100644 .identity/02_application_pullrequest.tf create mode 100644 .identity/02_application_pullrequest_auth.tf create mode 100644 .identity/99_outputs.tf create mode 100644 .opex/config.yaml create mode 100644 azure-dashboard-raw/azure_dashboard_raw.json create mode 100644 azure-dashboard/.terraform-version create mode 100644 azure-dashboard/01_opex.tf create mode 100644 azure-dashboard/99_main.tf create mode 100644 azure-dashboard/99_variables.tf create mode 100644 azure-dashboard/env/prod/backend.ini create mode 100644 azure-dashboard/env/prod/backend.tfvars create mode 100644 azure-dashboard/env/prod/terraform.tfvars create mode 100755 azure-dashboard/terraform.sh diff --git a/.identity/.terraform.lock.hcl b/.identity/.terraform.lock.hcl new file mode 100644 index 000000000..69c6e16fe --- /dev/null +++ b/.identity/.terraform.lock.hcl @@ -0,0 +1,41 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/azuread" { + version = "2.30.0" + constraints = "2.30.0" + hashes = [ + "h1:WnSPiREAFwnBUKREokMdHQ8Cjs47MzvS9pG8VS1ktec=", + "zh:1c3e89cf19118fc07d7b04257251fc9897e722c16e0a0df7b07fcd261f8c12e7", + "zh:2e62c193030e04ebb10cc0526119cf69824bf2d7e4ea5a2f45bd5d5fb7221d36", + "zh:2f3c7a35257332d68b778cefc5201a5f044e4914dd03794a4da662ddfe756483", + "zh:35d0d3a1b58fdb8b8c4462d6b7e7016042da43ea9cc734ce897f52a73407d9b0", + "zh:47ede0cd0206ec953d40bf4a80aa6e59af64e26cbbd877614ac424533dbb693b", + "zh:48c190307d4d42ea67c9b8cc544025024753f46cef6ea64db84735e7055a72da", + "zh:6fff9b2c6a962252a70a15b400147789ab369b35a781e9d21cce3804b04d29af", + "zh:7646980cf3438bff29c91ffedb74458febbb00a996638751fbd204ab1c628c9b", + "zh:77aa2fa7ca6d5446afa71d4ff83cb87b70a2f3b72110fc442c339e8e710b2928", + "zh:e20b2b2c37175b89dd0db058a096544d448032e28e3b56e2db368343533a9684", + "zh:eab175b1dfe9865ad9404dccb6d5542899f8c435095aa7c679314b811c717ce7", + "zh:efc862bd78c55d2ff089729e2a34c1831ab4b0644fc11b36ee4ebed00a4797ba", + ] +} + +provider "registry.terraform.io/hashicorp/azurerm" { + version = "3.33.0" + hashes = [ + "h1:UEAlSpnLUdpXP3hIyZRhTG3iYb++FJejLRT2AddA8SU=", + "zh:136d9c642746d8d84e62ecd8ab0c7dc015eac504c1f068e06fad438ae222d934", + "zh:266e64b8e32a94ddcc20954ebad1d8ff3921d318addf576e981b1390e5d5ba79", + "zh:3bd84a1e5b3bbe34a5870f271d6a5bf9b35a4c924db32b450a1fb53bc910c37a", + "zh:3c6604041472bb4691b502877cf9d886ed9f973fbadf11389ec9499fdc66045e", + "zh:680c00a73c8054c36a58115a44d02d1ebb675c2ad3afaaab2d74a01f978f16ce", + "zh:6dab47ef64f90e43b75ed240a974c4119f5268be4433f3c1c3e97559e7ef2f38", + "zh:9f73f19fdc340c443693dc03f1a145c6bd0ee5fd425eab7473d06abbe39b99d7", + "zh:9ff008b6737e880f191b4be6dfcef95ff019969dd787c44a58c2d7d6aaf6623b", + "zh:be297f1515e9ac63886e3e092a0bcd10aa8aa2b69c2b0995ce4e069176b07a95", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:fb29a566e7698cfae477f3efa3bba38526ec8343355763178c6e9c96e51399f3", + "zh:fbc3b625733ce5f0970fa8d9743f6db51064c168d6be5fc7a5e3d1a54af28bb7", + ] +} diff --git a/.identity/00_locals.tf b/.identity/00_locals.tf new file mode 100644 index 000000000..f2c07163a --- /dev/null +++ b/.identity/00_locals.tf @@ -0,0 +1,128 @@ +locals { + github = { + org = "pagopa" + repository = "pagopa-authorization" + } + subscriptions = [ + { + name = "COMMON" + id = "1fa3dd86-a404-4a89-af1f-9350a2ac0894" + terraform_storage_account_app = "tfappcommon" + }, + { + name = "DEV-CSTAR" + id = "4d177dd6-5c7d-40ab-8019-0c1be380a25d" + terraform_storage_account_app = "tfappdevcstar" + }, + { + name = "DEV-IO" + id = "a4e96bcd-59dc-4d66-b2f7-5547ad157c12" + terraform_storage_account_app = "tfappdevio" + }, + { + name = "DEV-pagoPA" + id = "bbe47ad4-08b3-4925-94c5-1278e5819b86" + terraform_storage_account_app = "tfappdevpagopa" + }, + { + name = "DEV-SelfCare" + id = "1ab5e788-3b98-4c63-bd05-de0c7388c853" + terraform_storage_account_app = "tfappdevselfcare" + }, + { + name = "DEV-SWCLIENT" + id = "000df80e-d061-4064-998e-d4e32146d17b" + terraform_storage_account_app = "tfappdevswclient" + }, + { + name = "DevOpsAutomation" + id = "eecb6e5c-a257-4994-bc32-eb79ca8e8a9a" + terraform_storage_account_app = "tfappdevopsautomation" + }, + { + name = "DevOpsLab" + id = "ac17914c-79bf-48fa-831e-1359ef74c1d5" + terraform_storage_account_app = "tfappdevopslab" + }, + { + name = "ORG" + id = "a001fc05-3125-4940-bbe0-7ef4125a8263" + terraform_storage_account_app = "tfapporg" + }, + { + name = "PROD-CSTAR" + id = "88c709b0-11cf-4450-856e-f9bf54051c1d" + terraform_storage_account_app = "tfappprodcstar" + }, + { + name = "PROD-Esercenti" + id = "74da48a3-b0e7-489d-8172-da79801086ed" + terraform_storage_account_app = "tfappprodesercenti" + }, + { + name = "PROD-IO" + id = "ec285037-c673-4f58-b594-d7c480da4e8b" + terraform_storage_account_app = "tfappprodio" + }, + { + name = "PROD-pagoPA" + id = "b9fc9419-6097-45fe-9f74-ba0641c91912" + terraform_storage_account_app = "tfappprodpagopa" + }, + { + name = "Prod-Sec" + id = "0da48c97-355f-4050-a520-f11a18b8be90" + terraform_storage_account_app = "tfappprodsec" + }, + { + name = "Prod-SelfCare" + id = "813119d7-0943-46ed-8ebe-cebe24f9106c" + terraform_storage_account_app = "tfappprodselfcare" + }, + { + name = "PROD-SITECORP" + id = "e7799d11-87a7-4c8f-a260-5539dc9c0e10" + terraform_storage_account_app = "tfappprodsitecorp" + }, + { + name = "PROD-SWCLIENT" + id = "d329da34-8a62-4fc1-8178-d0cf9189ece2" + terraform_storage_account_app = "tfappprodswclient" + }, + { + name = "UAT-CSTAR" + id = "f9f0ed60-4b4b-49a6-97cb-8c8a0f9e2435" + terraform_storage_account_app = "tfappuatcstar" + }, + { + name = "UAT-Esercenti" + id = "d1a90d9f-6ee1-4fb2-a149-7aedbf3ed49d" + terraform_storage_account_app = "tfappuatesercenti" + }, + { + name = "UAT-IO" + id = "3317594a-014b-44ac-b9fe-5783c53b8b32" + terraform_storage_account_app = "tfappuatio" + }, + { + name = "UAT-pagoPA" + id = "26abc801-0d8f-4a6e-ac5f-8e81bcc09112" + terraform_storage_account_app = "tfappuatpagopa" + }, + { + name = "UAT-SelfCare" + id = "f47d50dc-b874-4e04-9d5c-c27f5053a651" + terraform_storage_account_app = "tfappuatselfcare" + }, + { + name = "UAT-SITECORP" + id = "1d1dba80-d17b-4aec-ad55-b751b928eea0" + terraform_storage_account_app = "tfappuatsitecorp" + }, + { + name = "UAT-SWCLIENT" + id = "3b91354c-5956-4c35-b711-afeecb164933" + terraform_storage_account_app = "tfappuatswclient" + }, + ] +} diff --git a/.identity/00_main.tf b/.identity/00_main.tf new file mode 100644 index 000000000..746376ce8 --- /dev/null +++ b/.identity/00_main.tf @@ -0,0 +1,29 @@ +terraform { + required_version = ">=1.3.0" + + required_providers { + azuread = { + source = "hashicorp/azuread" + version = "2.30.0" + } + azurerm = { + source = "hashicorp/azurerm" + version = "3.33.0" + } + } + + backend "azurerm" { + resource_group_name = "terraform-state-rg" + storage_account_name = "tfappcommon" + container_name = "terraform-state" + key = "github-pagopa-authorization.tfstate" + } +} + +provider "azurerm" { + features {} +} + +data "azurerm_subscription" "current" {} + +data "azurerm_client_config" "current" {} diff --git a/.identity/00_main.tf.ci b/.identity/00_main.tf.ci new file mode 100644 index 000000000..542440a22 --- /dev/null +++ b/.identity/00_main.tf.ci @@ -0,0 +1,22 @@ +terraform { + required_version = ">=1.3.0" + + required_providers { + azuread = { + source = "hashicorp/azuread" + version = "2.30.0" + } + azurerm = { + source = "hashicorp/azurerm" + version = "3.33.0" + } + } +} + +provider "azurerm" { + features {} +} + +data "azurerm_subscription" "current" {} + +data "azurerm_client_config" "current" {} diff --git a/.identity/00_variables.tf b/.identity/00_variables.tf new file mode 100644 index 000000000..e69de29bb diff --git a/.identity/01_data.tf b/.identity/01_data.tf new file mode 100644 index 000000000..d43690e2e --- /dev/null +++ b/.identity/01_data.tf @@ -0,0 +1,3 @@ +resource "azuread_directory_role" "directory_readers" { + display_name = "Directory Readers" +} diff --git a/.identity/02_application_main.tf b/.identity/02_application_main.tf new file mode 100644 index 000000000..6604d057e --- /dev/null +++ b/.identity/02_application_main.tf @@ -0,0 +1,28 @@ +resource "azuread_application" "main" { + display_name = "github-${local.github.org}-${local.github.repository}-main" +} + +resource "azuread_service_principal" "main" { + application_id = azuread_application.main.application_id +} + +resource "azuread_application_federated_identity_credential" "main" { + application_object_id = azuread_application.main.object_id + display_name = "github-federated" + description = "github-federated" + audiences = ["api://AzureADTokenExchange"] + issuer = "https://token.actions.githubusercontent.com" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/main" +} + +output "azure_main_client_id" { + value = azuread_service_principal.main.application_id +} + +output "azure_main_application_id" { + value = azuread_service_principal.main.application_id +} + +output "azure_main_object_id" { + value = azuread_service_principal.main.object_id +} diff --git a/.identity/02_application_main_auth.tf b/.identity/02_application_main_auth.tf new file mode 100644 index 000000000..7a950118a --- /dev/null +++ b/.identity/02_application_main_auth.tf @@ -0,0 +1,18 @@ +resource "azuread_directory_role_assignment" "main_directory_readers" { + role_id = azuread_directory_role.directory_readers.template_id + principal_object_id = azuread_service_principal.main.object_id +} + +resource "azurerm_role_assignment" "main_authorization_reader" { + for_each = { for s in local.subscriptions : s.name => s } + scope = "/subscriptions/${each.value.id}" + role_definition_name = "PagoPA Authorization Reader" + principal_id = azuread_service_principal.main.object_id +} + +resource "azurerm_role_assignment" "main_terraform_storage_account_app" { + for_each = { for s in local.subscriptions : s.name => s } + scope = "/subscriptions/${each.value.id}/resourceGroups/terraform-state-rg/providers/Microsoft.Storage/storageAccounts/${each.value.terraform_storage_account_app}" + role_definition_name = "Contributor" + principal_id = azuread_service_principal.main.object_id +} diff --git a/.identity/02_application_pullrequest.tf b/.identity/02_application_pullrequest.tf new file mode 100644 index 000000000..cc8eea8f8 --- /dev/null +++ b/.identity/02_application_pullrequest.tf @@ -0,0 +1,28 @@ +resource "azuread_application" "pullrequest" { + display_name = "github-${local.github.org}-${local.github.repository}-pullrequest" +} + +resource "azuread_service_principal" "pullrequest" { + application_id = azuread_application.pullrequest.application_id +} + +resource "azuread_application_federated_identity_credential" "pullrequest" { + application_object_id = azuread_application.pullrequest.object_id + display_name = "github-federated" + description = "github-federated" + audiences = ["api://AzureADTokenExchange"] + issuer = "https://token.actions.githubusercontent.com" + subject = "repo:${local.github.org}/${local.github.repository}:pull_request" +} + +output "azure_pullrequest_client_id" { + value = azuread_service_principal.pullrequest.application_id +} + +output "azure_pullrequest_application_id" { + value = azuread_service_principal.pullrequest.application_id +} + +output "azure_pullrequest_object_id" { + value = azuread_service_principal.pullrequest.object_id +} diff --git a/.identity/02_application_pullrequest_auth.tf b/.identity/02_application_pullrequest_auth.tf new file mode 100644 index 000000000..ccb58fbdb --- /dev/null +++ b/.identity/02_application_pullrequest_auth.tf @@ -0,0 +1,18 @@ +resource "azuread_directory_role_assignment" "pullrequest_directory_readers" { + role_id = azuread_directory_role.directory_readers.template_id + principal_object_id = azuread_service_principal.pullrequest.object_id +} + +resource "azurerm_role_assignment" "pullrequest_authorization_reader" { + for_each = { for s in local.subscriptions : s.name => s } + scope = "/subscriptions/${each.value.id}" + role_definition_name = "PagoPA Authorization Reader" + principal_id = azuread_service_principal.pullrequest.object_id +} + +resource "azurerm_role_assignment" "pullrequest_terraform_storage_account_app" { + for_each = { for s in local.subscriptions : s.name => s } + scope = "/subscriptions/${each.value.id}/resourceGroups/terraform-state-rg/providers/Microsoft.Storage/storageAccounts/${each.value.terraform_storage_account_app}" + role_definition_name = "Contributor" + principal_id = azuread_service_principal.pullrequest.object_id +} diff --git a/.identity/99_outputs.tf b/.identity/99_outputs.tf new file mode 100644 index 000000000..468f12d85 --- /dev/null +++ b/.identity/99_outputs.tf @@ -0,0 +1,7 @@ +output "tenant_id" { + value = data.azurerm_client_config.current.tenant_id +} + +output "subscription_id" { + value = data.azurerm_subscription.current.subscription_id +} diff --git a/.opex/config.yaml b/.opex/config.yaml new file mode 100644 index 000000000..a1c3e19a4 --- /dev/null +++ b/.opex/config.yaml @@ -0,0 +1,8 @@ +oa3_spec: myfolder/api_backend.yaml +name: My dashboard +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA diff --git a/azure-dashboard-raw/azure_dashboard_raw.json b/azure-dashboard-raw/azure_dashboard_raw.json new file mode 100644 index 000000000..120ae18a4 --- /dev/null +++ b/azure-dashboard-raw/azure_dashboard_raw.json @@ -0,0 +1,9009 @@ + +{ + "properties": { + "lenses": { + "0": { + "order": 0, + "parts": { + + "0": { + "position": { + "x": 0, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "1": { + "position": { + "x": 6, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "2": { + "position": { + "x": 12, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "3": { + "position": { + "x": 0, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}/preferences", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "4": { + "position": { + "x": 6, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}/preferences", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "5": { + "position": { + "x": 12, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}/preferences", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "6": { + "position": { + "x": 0, + "y": 8, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "7": { + "position": { + "x": 6, + "y": 8, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "8": { + "position": { + "x": 12, + "y": 8, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "9": { + "position": { + "x": 0, + "y": 12, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "10": { + "position": { + "x": 6, + "y": 12, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "11": { + "position": { + "x": 12, + "y": 12, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "12": { + "position": { + "x": 0, + "y": 16, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "13": { + "position": { + "x": 6, + "y": 16, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "14": { + "position": { + "x": 12, + "y": 16, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "15": { + "position": { + "x": 0, + "y": 20, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}/message-status", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "16": { + "position": { + "x": 6, + "y": 20, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}/message-status", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "17": { + "position": { + "x": 12, + "y": 20, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}/message-status", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "18": { + "position": { + "x": 0, + "y": 24, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "19": { + "position": { + "x": 6, + "y": 24, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "20": { + "position": { + "x": 12, + "y": 24, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "21": { + "position": { + "x": 0, + "y": 28, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "22": { + "position": { + "x": 6, + "y": 28, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "23": { + "position": { + "x": 12, + "y": 28, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "24": { + "position": { + "x": 0, + "y": 32, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "25": { + "position": { + "x": 6, + "y": 32, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "26": { + "position": { + "x": 12, + "y": 32, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "27": { + "position": { + "x": 0, + "y": 36, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "28": { + "position": { + "x": 6, + "y": 36, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "29": { + "position": { + "x": 12, + "y": 36, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "30": { + "position": { + "x": 0, + "y": 40, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "31": { + "position": { + "x": 6, + "y": 40, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "32": { + "position": { + "x": 12, + "y": 40, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "33": { + "position": { + "x": 0, + "y": 44, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/api-profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "34": { + "position": { + "x": 6, + "y": 44, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/api-profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "35": { + "position": { + "x": 12, + "y": 44, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/api-profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "36": { + "position": { + "x": 0, + "y": 48, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/email-validation-process", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "37": { + "position": { + "x": 6, + "y": 48, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/email-validation-process", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "38": { + "position": { + "x": 12, + "y": 48, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/email-validation-process", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "39": { + "position": { + "x": 0, + "y": 52, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-metadata", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "40": { + "position": { + "x": 6, + "y": 52, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-metadata", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "41": { + "position": { + "x": 12, + "y": 52, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-metadata", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "42": { + "position": { + "x": 0, + "y": 56, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/installations/{installationID}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "43": { + "position": { + "x": 6, + "y": 56, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/installations/{installationID}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "44": { + "position": { + "x": 12, + "y": 56, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/installations/{installationID}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "45": { + "position": { + "x": 0, + "y": 60, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/session", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "46": { + "position": { + "x": 6, + "y": 60, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/session", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "47": { + "position": { + "x": 12, + "y": 60, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/session", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "48": { + "position": { + "x": 0, + "y": 64, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/sessions", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "49": { + "position": { + "x": 6, + "y": 64, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/sessions", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "50": { + "position": { + "x": 12, + "y": 64, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/sessions", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "51": { + "position": { + "x": 0, + "y": 68, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/token/support", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "52": { + "position": { + "x": 6, + "y": 68, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/token/support", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "53": { + "position": { + "x": 12, + "y": 68, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/token/support", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "54": { + "position": { + "x": 0, + "y": 72, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-requests/{rptId}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "55": { + "position": { + "x": 6, + "y": 72, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-requests/{rptId}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "56": { + "position": { + "x": 12, + "y": 72, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-requests/{rptId}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "57": { + "position": { + "x": 0, + "y": 76, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "58": { + "position": { + "x": 6, + "y": 76, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "59": { + "position": { + "x": 12, + "y": 76, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "60": { + "position": { + "x": 0, + "y": 80, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations/{codiceContestoPagamento}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "61": { + "position": { + "x": 6, + "y": 80, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations/{codiceContestoPagamento}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "62": { + "position": { + "x": 12, + "y": 80, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations/{codiceContestoPagamento}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "63": { + "position": { + "x": 0, + "y": 84, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "64": { + "position": { + "x": 6, + "y": 84, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "65": { + "position": { + "x": 12, + "y": 84, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + + "66": { + "position": { + "x": 0, + "y": 88, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing/{choice}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "67": { + "position": { + "x": 6, + "y": 88, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing/{choice}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "68": { + "position": { + "x": 12, + "y": 88, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing/{choice}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + } + + } + } + }, + "metadata": { + "model": { + "timeRange": { + "value": { + "relative": { + "duration": 24, + "timeUnit": 1 + } + }, + "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" + }, + "filterLocale": { + "value": "en-us" + }, + "filters": { + "value": { + "MsPortalFx_TimeRange": { + "model": { + "format": "local", + "granularity": "auto", + "relative": "48h" + }, + "displayCache": { + "name": "Local Time", + "value": "Past 48 hours" + }, + "filteredPartIds": [ + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ed", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ef", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f1", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f3", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f5", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f7", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f9", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fb", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fd" + ] + } + } + } + } + } + }, + "name": "My dashboard", + "type": "Microsoft.Portal/dashboards", + "location": "West Europe", + "tags": { + "hidden-title": "My dashboard" + }, + "apiVersion": "2015-08-01-preview" +} diff --git a/azure-dashboard/.terraform-version b/azure-dashboard/.terraform-version new file mode 100644 index 000000000..d0149fef7 --- /dev/null +++ b/azure-dashboard/.terraform-version @@ -0,0 +1 @@ +1.3.4 diff --git a/azure-dashboard/01_opex.tf b/azure-dashboard/01_opex.tf new file mode 100644 index 000000000..599740cee --- /dev/null +++ b/azure-dashboard/01_opex.tf @@ -0,0 +1,11044 @@ + +locals { + name = "${var.prefix}-${var.env_short}-My_dashboard" + dashboard_base_addr = "https://portal.azure.com/#@pagopait.onmicrosoft.com/dashboard/arm" +} + +data "azurerm_resource_group" "this" { + name = "dashboards" +} + +resource "azurerm_portal_dashboard" "this" { + name = local.name + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + dashboard_properties = <<-PROPS + { + "lenses": { + "0": { + "order": 0, + "parts": { + "0": { + "position": { + "x": 0, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "1": { + "position": { + "x": 6, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "2": { + "position": { + "x": 12, + "y": 0, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "3": { + "position": { + "x": 0, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}/preferences", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "4": { + "position": { + "x": 6, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}/preferences", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "5": { + "position": { + "x": 12, + "y": 4, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services/{service_id}/preferences", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "6": { + "position": { + "x": 0, + "y": 8, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "7": { + "position": { + "x": 6, + "y": 8, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "8": { + "position": { + "x": 12, + "y": 8, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/services", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "9": { + "position": { + "x": 0, + "y": 12, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "10": { + "position": { + "x": 6, + "y": 12, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "11": { + "position": { + "x": 12, + "y": 12, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "12": { + "position": { + "x": 0, + "y": 16, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "13": { + "position": { + "x": 6, + "y": 16, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "14": { + "position": { + "x": 12, + "y": 16, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "15": { + "position": { + "x": 0, + "y": 20, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}/message-status", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "16": { + "position": { + "x": 6, + "y": 20, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}/message-status", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "17": { + "position": { + "x": 12, + "y": 20, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/messages/{id}/message-status", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "18": { + "position": { + "x": 0, + "y": 24, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "19": { + "position": { + "x": 6, + "y": 24, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "20": { + "position": { + "x": 12, + "y": 24, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "21": { + "position": { + "x": 0, + "y": 28, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "22": { + "position": { + "x": 6, + "y": 28, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "23": { + "position": { + "x": 12, + "y": 28, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "24": { + "position": { + "x": 0, + "y": 32, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "25": { + "position": { + "x": 6, + "y": 32, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "26": { + "position": { + "x": 12, + "y": 32, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "27": { + "position": { + "x": 0, + "y": 36, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "28": { + "position": { + "x": 6, + "y": 36, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "29": { + "position": { + "x": 12, + "y": 36, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "30": { + "position": { + "x": 0, + "y": 40, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "31": { + "position": { + "x": 6, + "y": 40, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "32": { + "position": { + "x": 12, + "y": 40, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "33": { + "position": { + "x": 0, + "y": 44, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/api-profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "34": { + "position": { + "x": 6, + "y": 44, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/api-profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "35": { + "position": { + "x": 12, + "y": 44, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/api-profile", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "36": { + "position": { + "x": 0, + "y": 48, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/email-validation-process", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "37": { + "position": { + "x": 6, + "y": 48, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/email-validation-process", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "38": { + "position": { + "x": 12, + "y": 48, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/email-validation-process", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "39": { + "position": { + "x": 0, + "y": 52, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-metadata", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "40": { + "position": { + "x": 6, + "y": 52, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-metadata", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "41": { + "position": { + "x": 12, + "y": 52, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-metadata", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "42": { + "position": { + "x": 0, + "y": 56, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/installations/{installationID}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "43": { + "position": { + "x": 6, + "y": 56, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/installations/{installationID}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "44": { + "position": { + "x": 12, + "y": 56, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/installations/{installationID}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "45": { + "position": { + "x": 0, + "y": 60, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/session", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "46": { + "position": { + "x": 6, + "y": 60, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/session", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "47": { + "position": { + "x": 12, + "y": 60, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/session", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "48": { + "position": { + "x": 0, + "y": 64, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/sessions", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "49": { + "position": { + "x": 6, + "y": 64, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/sessions", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "50": { + "position": { + "x": 12, + "y": 64, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/sessions", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "51": { + "position": { + "x": 0, + "y": 68, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/token/support", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "52": { + "position": { + "x": 6, + "y": 68, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/token/support", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "53": { + "position": { + "x": 12, + "y": 68, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/token/support", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "54": { + "position": { + "x": 0, + "y": 72, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-requests/{rptId}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "55": { + "position": { + "x": 6, + "y": 72, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-requests/{rptId}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "56": { + "position": { + "x": 12, + "y": 72, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-requests/{rptId}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "57": { + "position": { + "x": 0, + "y": 76, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "58": { + "position": { + "x": 6, + "y": 76, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "59": { + "position": { + "x": 12, + "y": 76, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "60": { + "position": { + "x": 0, + "y": 80, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations/{codiceContestoPagamento}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "61": { + "position": { + "x": 6, + "y": 80, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations/{codiceContestoPagamento}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "62": { + "position": { + "x": 12, + "y": 80, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/payment-activations/{codiceContestoPagamento}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "63": { + "position": { + "x": 0, + "y": 84, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "64": { + "position": { + "x": 6, + "y": 84, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "65": { + "position": { + "x": 12, + "y": 84, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + }, + "66": { + "position": { + "x": 0, + "y": 88, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Line", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Availability (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing/{choice}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "availability", + "type": "real" + }, + { + "name": "watermark", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "PartTitle": "Availability (5m)" + } + } + } + }, + "67": { + "position": { + "x": 6, + "y": 88, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "Pie", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Response Codes (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing/{choice}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "httpStatus_d", + "type": "string" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "SpecificChart": "StackedArea", + "PartTitle": "Response Codes (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "count_", + "type": "long" + } + ], + "splitBy": [ + { + "name": "HTTPStatus", + "type": "string" + } + ], + "aggregation": "Sum" + } + } + } + } + }, + "68": { + "position": { + "x": 12, + "y": 88, + "colSpan": 6, + "rowSpan": 4 + }, + "metadata": { + "inputs": [ + { + "name": "resourceTypeMode", + "isOptional": true + }, + { + "name": "ComponentId", + "isOptional": true + }, + { + "name": "Scope", + "value": { + "resourceIds": [ + "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + ] + }, + "isOptional": true + }, + { + "name": "PartId", + "isOptional": true + }, + { + "name": "Version", + "value": "2.0", + "isOptional": true + }, + { + "name": "TimeRange", + "value": "PT4H", + "isOptional": true + }, + { + "name": "DashboardId", + "isOptional": true + }, + { + "name": "DraftRequestParameters", + "value": { + "scope": "hierarchy" + }, + "isOptional": true + }, + { + "name": "Query", + "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "isOptional": true + }, + { + "name": "ControlType", + "value": "FrameControlChart", + "isOptional": true + }, + { + "name": "SpecificChart", + "value": "StackedColumn", + "isOptional": true + }, + { + "name": "PartTitle", + "value": "Percentile Response Time (5m)", + "isOptional": true + }, + { + "name": "PartSubTitle", + "value": "/api/v1/user-data-processing/{choice}", + "isOptional": true + }, + { + "name": "Dimensions", + "value": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + }, + "isOptional": true + }, + { + "name": "LegendOptions", + "value": { + "isEnabled": true, + "position": "Bottom" + }, + "isOptional": true + }, + { + "name": "IsQueryContainTimeRange", + "value": false, + "isOptional": true + } + ], + "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", + "settings": { + "content": { + "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "SpecificChart": "Line", + "PartTitle": "Percentile Response Time (5m)", + "Dimensions": { + "xAxis": { + "name": "TimeGenerated", + "type": "datetime" + }, + "yAxis": [ + { + "name": "watermark", + "type": "long" + }, + { + "name": "percentile_timeTaken_d_95", + "type": "real" + } + ], + "splitBy": [], + "aggregation": "Sum" + } + } + } + } + } + } + } + }, + "metadata": { + "model": { + "timeRange": { + "value": { + "relative": { + "duration": 24, + "timeUnit": 1 + } + }, + "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" + }, + "filterLocale": { + "value": "en-us" + }, + "filters": { + "value": { + "MsPortalFx_TimeRange": { + "model": { + "format": "local", + "granularity": "auto", + "relative": "48h" + }, + "displayCache": { + "name": "Local Time", + "value": "Past 48 hours" + }, + "filteredPartIds": [ + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ed", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ef", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f1", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f3", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f5", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f7", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f9", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fb", + "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fd" + ] + } + } + } + } + } +} + PROPS + + tags = var.tags +} + + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_0" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/services/{service_id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/services/{service_id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/services/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_0" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/services/{service_id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/services/{service_id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/services/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_1" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/services/{service_id}/preferences")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/services/{service_id}/preferences is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/services/[^/]+/preferences" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_1" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/services/{service_id}/preferences")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/services/{service_id}/preferences is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/services/[^/]+/preferences" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_2" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/services")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/services is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/services" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_2" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/services")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/services is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/services" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_3" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/messages")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/messages is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/messages" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_3" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/messages")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/messages is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/messages" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_4" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/messages/{id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/messages/{id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/messages/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_4" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/messages/{id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/messages/{id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/messages/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_5" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/messages/{id}/message-status")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/messages/{id}/message-status is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/messages/[^/]+/message-status" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_5" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/messages/{id}/message-status")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/messages/{id}/message-status is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/messages/[^/]+/message-status" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_6" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/legal-messages/{id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/legal-messages/{id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_6" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/legal-messages/{id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/legal-messages/{id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_7" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/legal-messages/{id}/attachments/{attachment_id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/legal-messages/{id}/attachments/{attachment_id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+/attachments/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_7" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/legal-messages/{id}/attachments/{attachment_id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/legal-messages/{id}/attachments/{attachment_id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+/attachments/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_8" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/third-party-messages/{id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/third-party-messages/{id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_8" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/third-party-messages/{id}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/third-party-messages/{id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_9" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/third-party-messages/{id}/attachments/{attachment_url}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/third-party-messages/{id}/attachments/{attachment_url} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+/attachments/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_9" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/third-party-messages/{id}/attachments/{attachment_url}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/third-party-messages/{id}/attachments/{attachment_url} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+/attachments/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_10" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/profile")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/profile is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/profile" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_10" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/profile")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/profile is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/profile" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_11" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/api-profile")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/api-profile is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/api-profile" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_11" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/api-profile")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/api-profile is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/api-profile" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_12" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/email-validation-process")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/email-validation-process is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/email-validation-process" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_12" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/email-validation-process")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/email-validation-process is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/email-validation-process" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_13" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/user-metadata")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/user-metadata is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/user-metadata" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_13" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/user-metadata")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/user-metadata is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/user-metadata" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_14" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/installations/{installationID}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/installations/{installationID} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/installations/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_14" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/installations/{installationID}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/installations/{installationID} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/installations/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_15" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/session")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/session is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/session" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_15" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/session")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/session is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/session" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_16" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/sessions")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/sessions is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/sessions" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_16" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/sessions")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/sessions is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/sessions" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_17" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/token/support")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/token/support is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/token/support" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_17" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/token/support")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/token/support is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/token/support" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_18" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/payment-requests/{rptId}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/payment-requests/{rptId} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/payment-requests/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_18" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/payment-requests/{rptId}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/payment-requests/{rptId} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/payment-requests/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_19" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/payment-activations")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/payment-activations is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/payment-activations" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_19" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/payment-activations")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/payment-activations is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/payment-activations" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_20" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/payment-activations/{codiceContestoPagamento}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/payment-activations/{codiceContestoPagamento} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/payment-activations/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_20" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/payment-activations/{codiceContestoPagamento}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/payment-activations/{codiceContestoPagamento} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/payment-activations/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_21" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/user-data-processing")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/user-data-processing is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/user-data-processing" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_21" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/user-data-processing")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/user-data-processing is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/user-data-processing" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_22" { + name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/user-data-processing/{choice}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Availability for /api/v1/user-data-processing/{choice} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 0.99; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/user-data-processing/[^/]+" +| summarize + Total=count(), + Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) +| extend availability=toreal(Success) / Total + +| where availability < threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + +resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_22" { + name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/user-data-processing/{choice}")), "/\\{|\\}/", "") + resource_group_name = data.azurerm_resource_group.this.name + location = data.azurerm_resource_group.this.location + + action { + action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] + } + + data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" + description = "Response time for /api/v1/user-data-processing/{choice} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" + enabled = true + auto_mitigation_enabled = false + + query = <<-QUERY + +let api_hosts = datatable (name: string) ["localhost"]; +let threshold = 1; +AzureDiagnostics +| where originalHost_s in (api_hosts) +| where requestUri_s matches regex "/api/v1/user-data-processing/[^/]+" +| summarize + watermark=threshold, + percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) + +| where percentile_timeTaken_d_95 > threshold + + + QUERY + + severity = 1 + frequency = 10 + time_window = 20 + trigger { + operator = "GreaterThanOrEqual" + threshold = 1 + } + + tags = var.tags +} + diff --git a/azure-dashboard/99_main.tf b/azure-dashboard/99_main.tf new file mode 100644 index 000000000..74ddef976 --- /dev/null +++ b/azure-dashboard/99_main.tf @@ -0,0 +1,16 @@ +terraform { + required_version = ">=1.1.5" + + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = ">=3.0.0" + } + } + + backend "azurerm" {} +} + +provider "azurerm" { + features {} +} diff --git a/azure-dashboard/99_variables.tf b/azure-dashboard/99_variables.tf new file mode 100644 index 000000000..3f54e101d --- /dev/null +++ b/azure-dashboard/99_variables.tf @@ -0,0 +1,26 @@ +variable "prefix" { + type = string + validation { + condition = ( + length(var.prefix) <= 6 + ) + error_message = "Max length is 6 chars." + } +} + +variable "env_short" { + type = string + validation { + condition = ( + length(var.env_short) <= 1 + ) + error_message = "Max length is 1 chars." + } +} + +variable "tags" { + type = map(any) + default = { + CreatedBy = "Terraform" + } +} diff --git a/azure-dashboard/env/prod/backend.ini b/azure-dashboard/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/azure-dashboard/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/azure-dashboard/env/prod/backend.tfvars b/azure-dashboard/env/prod/backend.tfvars new file mode 100644 index 000000000..de73692f8 --- /dev/null +++ b/azure-dashboard/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_backend.tfstate" diff --git a/azure-dashboard/env/prod/terraform.tfvars b/azure-dashboard/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/azure-dashboard/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/azure-dashboard/terraform.sh b/azure-dashboard/terraform.sh new file mode 100755 index 000000000..e741886e8 --- /dev/null +++ b/azure-dashboard/terraform.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -e + +ACTION=$1 +ENV=$2 +shift 2 +other="$@" +# must be subscription in lower case +subscription="" +BACKEND_CONFIG_PATH="./env/${ENV}/backend.tfvars" + +if [ -z "$ACTION" ]; then + echo "[ERROR] Missed ACTION: init, apply, plan" + exit 0 +fi + +if [ -z "$ENV" ]; then + echo "[ERROR] ENV should be: dev, uat or prod." + exit 0 +fi + +# +# 🏁 Source & init shell +# + +# shellcheck source=/dev/null +source "./env/$ENV/backend.ini" + +# Subscription set +az account set -s "${subscription}" + +# if using cygwin, we have to transcode the WORKDIR +if [[ $WORKDIR == /cygdrive/* ]]; then + WORKDIR=$(cygpath -w $WORKDIR) +fi + +# Helm +export HELM_DEBUG=1 + +# +# 🌎 Terraform +# +if echo "init plan apply refresh import output state taint destroy" | grep -w "$ACTION" > /dev/null; then + if [ "$ACTION" = "init" ]; then + echo "[INFO] init tf on ENV: ${ENV}" + terraform "$ACTION" -backend-config="${BACKEND_CONFIG_PATH}" $other + elif [ "$ACTION" = "output" ] || [ "$ACTION" = "state" ] || [ "$ACTION" = "taint" ]; then + # init terraform backend + terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" + terraform "$ACTION" $other + else + # init terraform backend + echo "[INFO] init tf on ENV: ${ENV}" + terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" + + echo "[INFO] run tf with: ${ACTION} on ENV: ${ENV} and other: >${other}<" + terraform "${ACTION}" -var-file="./env/${ENV}/terraform.tfvars" -compact-warnings $other + fi +else + echo "[ERROR] ACTION not allowed." + exit 1 +fi From 2341397c9d2a99239a14df6c9542fc22681cb3a3 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 7 Dec 2022 17:33:08 +0100 Subject: [PATCH 02/73] add identity --- .../hashicorp/azuread/2.30.0/darwin_amd64 | 1 + .../hashicorp/azurerm/3.33.0/darwin_amd64 | 1 + .identity/.terraform/terraform.tfstate | 45 +++++++ .identity/00_locals.tf | 124 +----------------- .identity/00_main.tf | 7 +- .identity/01_data.tf | 9 +- .identity/02_application_main.tf | 28 ---- .identity/02_application_main_auth.tf | 18 --- .identity/02_application_master.tf | 28 ++++ .identity/02_application_master_auth.tf | 17 +++ .identity/02_application_pullrequest_auth.tf | 19 ++- .identity/env/prod/backend.ini | 1 + .identity/env/prod/backend.tfvars | 4 + .identity/env/prod/terraform.tfvars | 10 ++ .identity/terraform.sh | 63 +++++++++ .terraform-version | 1 + 16 files changed, 189 insertions(+), 187 deletions(-) create mode 120000 .identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 create mode 120000 .identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 create mode 100644 .identity/.terraform/terraform.tfstate delete mode 100644 .identity/02_application_main.tf delete mode 100644 .identity/02_application_main_auth.tf create mode 100644 .identity/02_application_master.tf create mode 100644 .identity/02_application_master_auth.tf create mode 100644 .identity/env/prod/backend.ini create mode 100644 .identity/env/prod/backend.tfvars create mode 100644 .identity/env/prod/terraform.tfvars create mode 100755 .identity/terraform.sh create mode 100644 .terraform-version diff --git a/.identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 b/.identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 new file mode 120000 index 000000000..8df6990df --- /dev/null +++ b/.identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 @@ -0,0 +1 @@ +/Users/pasqualedevita/.terraform.d/plugin-cache/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 \ No newline at end of file diff --git a/.identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 b/.identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 new file mode 120000 index 000000000..31cc35959 --- /dev/null +++ b/.identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 @@ -0,0 +1 @@ +/Users/pasqualedevita/.terraform.d/plugin-cache/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 \ No newline at end of file diff --git a/.identity/.terraform/terraform.tfstate b/.identity/.terraform/terraform.tfstate new file mode 100644 index 000000000..1a3e485be --- /dev/null +++ b/.identity/.terraform/terraform.tfstate @@ -0,0 +1,45 @@ +{ + "version": 3, + "serial": 1, + "lineage": "17eba399-fdf3-e990-5e10-51bf9cb5d944", + "backend": { + "type": "azurerm", + "config": { + "access_key": null, + "client_certificate_password": null, + "client_certificate_path": null, + "client_id": null, + "client_secret": null, + "container_name": "terraform-state", + "endpoint": null, + "environment": null, + "key": "io-backend.tfstate", + "metadata_host": null, + "msi_endpoint": null, + "oidc_request_token": null, + "oidc_request_url": null, + "oidc_token": null, + "oidc_token_file_path": null, + "resource_group_name": "terraform-state-rg", + "sas_token": null, + "snapshot": null, + "storage_account_name": "tfappprodio", + "subscription_id": null, + "tenant_id": null, + "use_azuread_auth": null, + "use_msi": null, + "use_oidc": null + }, + "hash": 3206449086 + }, + "modules": [ + { + "path": [ + "root" + ], + "outputs": {}, + "resources": {}, + "depends_on": [] + } + ] +} diff --git a/.identity/00_locals.tf b/.identity/00_locals.tf index f2c07163a..9abb828fb 100644 --- a/.identity/00_locals.tf +++ b/.identity/00_locals.tf @@ -1,128 +1,6 @@ locals { github = { org = "pagopa" - repository = "pagopa-authorization" + repository = "io-backend" } - subscriptions = [ - { - name = "COMMON" - id = "1fa3dd86-a404-4a89-af1f-9350a2ac0894" - terraform_storage_account_app = "tfappcommon" - }, - { - name = "DEV-CSTAR" - id = "4d177dd6-5c7d-40ab-8019-0c1be380a25d" - terraform_storage_account_app = "tfappdevcstar" - }, - { - name = "DEV-IO" - id = "a4e96bcd-59dc-4d66-b2f7-5547ad157c12" - terraform_storage_account_app = "tfappdevio" - }, - { - name = "DEV-pagoPA" - id = "bbe47ad4-08b3-4925-94c5-1278e5819b86" - terraform_storage_account_app = "tfappdevpagopa" - }, - { - name = "DEV-SelfCare" - id = "1ab5e788-3b98-4c63-bd05-de0c7388c853" - terraform_storage_account_app = "tfappdevselfcare" - }, - { - name = "DEV-SWCLIENT" - id = "000df80e-d061-4064-998e-d4e32146d17b" - terraform_storage_account_app = "tfappdevswclient" - }, - { - name = "DevOpsAutomation" - id = "eecb6e5c-a257-4994-bc32-eb79ca8e8a9a" - terraform_storage_account_app = "tfappdevopsautomation" - }, - { - name = "DevOpsLab" - id = "ac17914c-79bf-48fa-831e-1359ef74c1d5" - terraform_storage_account_app = "tfappdevopslab" - }, - { - name = "ORG" - id = "a001fc05-3125-4940-bbe0-7ef4125a8263" - terraform_storage_account_app = "tfapporg" - }, - { - name = "PROD-CSTAR" - id = "88c709b0-11cf-4450-856e-f9bf54051c1d" - terraform_storage_account_app = "tfappprodcstar" - }, - { - name = "PROD-Esercenti" - id = "74da48a3-b0e7-489d-8172-da79801086ed" - terraform_storage_account_app = "tfappprodesercenti" - }, - { - name = "PROD-IO" - id = "ec285037-c673-4f58-b594-d7c480da4e8b" - terraform_storage_account_app = "tfappprodio" - }, - { - name = "PROD-pagoPA" - id = "b9fc9419-6097-45fe-9f74-ba0641c91912" - terraform_storage_account_app = "tfappprodpagopa" - }, - { - name = "Prod-Sec" - id = "0da48c97-355f-4050-a520-f11a18b8be90" - terraform_storage_account_app = "tfappprodsec" - }, - { - name = "Prod-SelfCare" - id = "813119d7-0943-46ed-8ebe-cebe24f9106c" - terraform_storage_account_app = "tfappprodselfcare" - }, - { - name = "PROD-SITECORP" - id = "e7799d11-87a7-4c8f-a260-5539dc9c0e10" - terraform_storage_account_app = "tfappprodsitecorp" - }, - { - name = "PROD-SWCLIENT" - id = "d329da34-8a62-4fc1-8178-d0cf9189ece2" - terraform_storage_account_app = "tfappprodswclient" - }, - { - name = "UAT-CSTAR" - id = "f9f0ed60-4b4b-49a6-97cb-8c8a0f9e2435" - terraform_storage_account_app = "tfappuatcstar" - }, - { - name = "UAT-Esercenti" - id = "d1a90d9f-6ee1-4fb2-a149-7aedbf3ed49d" - terraform_storage_account_app = "tfappuatesercenti" - }, - { - name = "UAT-IO" - id = "3317594a-014b-44ac-b9fe-5783c53b8b32" - terraform_storage_account_app = "tfappuatio" - }, - { - name = "UAT-pagoPA" - id = "26abc801-0d8f-4a6e-ac5f-8e81bcc09112" - terraform_storage_account_app = "tfappuatpagopa" - }, - { - name = "UAT-SelfCare" - id = "f47d50dc-b874-4e04-9d5c-c27f5053a651" - terraform_storage_account_app = "tfappuatselfcare" - }, - { - name = "UAT-SITECORP" - id = "1d1dba80-d17b-4aec-ad55-b751b928eea0" - terraform_storage_account_app = "tfappuatsitecorp" - }, - { - name = "UAT-SWCLIENT" - id = "3b91354c-5956-4c35-b711-afeecb164933" - terraform_storage_account_app = "tfappuatswclient" - }, - ] } diff --git a/.identity/00_main.tf b/.identity/00_main.tf index 746376ce8..eb383f636 100644 --- a/.identity/00_main.tf +++ b/.identity/00_main.tf @@ -12,12 +12,7 @@ terraform { } } - backend "azurerm" { - resource_group_name = "terraform-state-rg" - storage_account_name = "tfappcommon" - container_name = "terraform-state" - key = "github-pagopa-authorization.tfstate" - } + backend "azurerm" {} } provider "azurerm" { diff --git a/.identity/01_data.tf b/.identity/01_data.tf index d43690e2e..091424dcb 100644 --- a/.identity/01_data.tf +++ b/.identity/01_data.tf @@ -1,3 +1,8 @@ -resource "azuread_directory_role" "directory_readers" { - display_name = "Directory Readers" +data "azurerm_storage_account" "tfstate_app" { + name = "tfappprodio" + resource_group_name = "terraform-state-rg" +} + +data "azurerm_resource_group" "dashboards" { + name = "dashboards" } diff --git a/.identity/02_application_main.tf b/.identity/02_application_main.tf deleted file mode 100644 index 6604d057e..000000000 --- a/.identity/02_application_main.tf +++ /dev/null @@ -1,28 +0,0 @@ -resource "azuread_application" "main" { - display_name = "github-${local.github.org}-${local.github.repository}-main" -} - -resource "azuread_service_principal" "main" { - application_id = azuread_application.main.application_id -} - -resource "azuread_application_federated_identity_credential" "main" { - application_object_id = azuread_application.main.object_id - display_name = "github-federated" - description = "github-federated" - audiences = ["api://AzureADTokenExchange"] - issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/main" -} - -output "azure_main_client_id" { - value = azuread_service_principal.main.application_id -} - -output "azure_main_application_id" { - value = azuread_service_principal.main.application_id -} - -output "azure_main_object_id" { - value = azuread_service_principal.main.object_id -} diff --git a/.identity/02_application_main_auth.tf b/.identity/02_application_main_auth.tf deleted file mode 100644 index 7a950118a..000000000 --- a/.identity/02_application_main_auth.tf +++ /dev/null @@ -1,18 +0,0 @@ -resource "azuread_directory_role_assignment" "main_directory_readers" { - role_id = azuread_directory_role.directory_readers.template_id - principal_object_id = azuread_service_principal.main.object_id -} - -resource "azurerm_role_assignment" "main_authorization_reader" { - for_each = { for s in local.subscriptions : s.name => s } - scope = "/subscriptions/${each.value.id}" - role_definition_name = "PagoPA Authorization Reader" - principal_id = azuread_service_principal.main.object_id -} - -resource "azurerm_role_assignment" "main_terraform_storage_account_app" { - for_each = { for s in local.subscriptions : s.name => s } - scope = "/subscriptions/${each.value.id}/resourceGroups/terraform-state-rg/providers/Microsoft.Storage/storageAccounts/${each.value.terraform_storage_account_app}" - role_definition_name = "Contributor" - principal_id = azuread_service_principal.main.object_id -} diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf new file mode 100644 index 000000000..7da2ab66f --- /dev/null +++ b/.identity/02_application_master.tf @@ -0,0 +1,28 @@ +resource "azuread_application" "master" { + display_name = "github-${local.github.org}-${local.github.repository}-master" +} + +resource "azuread_service_principal" "master" { + application_id = azuread_application.master.application_id +} + +resource "azuread_application_federated_identity_credential" "master" { + application_object_id = azuread_application.master.object_id + display_name = "github-federated" + description = "github-federated" + audiences = ["api://AzureADTokenExchange"] + issuer = "https://token.actions.githubusercontent.com" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" +} + +output "azure_master_client_id" { + value = azuread_service_principal.master.application_id +} + +output "azure_master_application_id" { + value = azuread_service_principal.master.application_id +} + +output "azure_master_object_id" { + value = azuread_service_principal.master.object_id +} diff --git a/.identity/02_application_master_auth.tf b/.identity/02_application_master_auth.tf new file mode 100644 index 000000000..39de83dd7 --- /dev/null +++ b/.identity/02_application_master_auth.tf @@ -0,0 +1,17 @@ +resource "azurerm_role_assignment" "master_terraform_subscription" { + scope = data.azurerm_subscription.current.id + role_definition_name = "Reader" + principal_id = azuread_service_principal.master.object_id +} + +resource "azurerm_role_assignment" "master_terraform_storage_account_tfstate_app" { + scope = data.azurerm_storage_account.tfstate_app.id + role_definition_name = "Contributor" + principal_id = azuread_service_principal.master.object_id +} + +resource "azurerm_role_assignment" "master_terraform_resource_group_dashboards" { + scope = data.azurerm_resource_group.dashboards.id + role_definition_name = "Contributor" + principal_id = azuread_service_principal.master.object_id +} diff --git a/.identity/02_application_pullrequest_auth.tf b/.identity/02_application_pullrequest_auth.tf index ccb58fbdb..cfd985f11 100644 --- a/.identity/02_application_pullrequest_auth.tf +++ b/.identity/02_application_pullrequest_auth.tf @@ -1,18 +1,17 @@ -resource "azuread_directory_role_assignment" "pullrequest_directory_readers" { - role_id = azuread_directory_role.directory_readers.template_id - principal_object_id = azuread_service_principal.pullrequest.object_id +resource "azurerm_role_assignment" "pullrequest_terraform_subscription" { + scope = data.azurerm_subscription.current.id + role_definition_name = "Reader" + principal_id = azuread_service_principal.pullrequest.object_id } -resource "azurerm_role_assignment" "pullrequest_authorization_reader" { - for_each = { for s in local.subscriptions : s.name => s } - scope = "/subscriptions/${each.value.id}" - role_definition_name = "PagoPA Authorization Reader" +resource "azurerm_role_assignment" "pullrequest_terraform_storage_account_tfstate_app" { + scope = data.azurerm_storage_account.tfstate_app.id + role_definition_name = "Contributor" principal_id = azuread_service_principal.pullrequest.object_id } -resource "azurerm_role_assignment" "pullrequest_terraform_storage_account_app" { - for_each = { for s in local.subscriptions : s.name => s } - scope = "/subscriptions/${each.value.id}/resourceGroups/terraform-state-rg/providers/Microsoft.Storage/storageAccounts/${each.value.terraform_storage_account_app}" +resource "azurerm_role_assignment" "pullrequest_terraform_resource_group_dashboards" { + scope = data.azurerm_resource_group.dashboards.id role_definition_name = "Contributor" principal_id = azuread_service_principal.pullrequest.object_id } diff --git a/.identity/env/prod/backend.ini b/.identity/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.identity/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.identity/env/prod/backend.tfvars b/.identity/env/prod/backend.tfvars new file mode 100644 index 000000000..f3e2d44ae --- /dev/null +++ b/.identity/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "io-backend.tfstate" diff --git a/.identity/env/prod/terraform.tfvars b/.identity/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.identity/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.identity/terraform.sh b/.identity/terraform.sh new file mode 100755 index 000000000..e741886e8 --- /dev/null +++ b/.identity/terraform.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -e + +ACTION=$1 +ENV=$2 +shift 2 +other="$@" +# must be subscription in lower case +subscription="" +BACKEND_CONFIG_PATH="./env/${ENV}/backend.tfvars" + +if [ -z "$ACTION" ]; then + echo "[ERROR] Missed ACTION: init, apply, plan" + exit 0 +fi + +if [ -z "$ENV" ]; then + echo "[ERROR] ENV should be: dev, uat or prod." + exit 0 +fi + +# +# 🏁 Source & init shell +# + +# shellcheck source=/dev/null +source "./env/$ENV/backend.ini" + +# Subscription set +az account set -s "${subscription}" + +# if using cygwin, we have to transcode the WORKDIR +if [[ $WORKDIR == /cygdrive/* ]]; then + WORKDIR=$(cygpath -w $WORKDIR) +fi + +# Helm +export HELM_DEBUG=1 + +# +# 🌎 Terraform +# +if echo "init plan apply refresh import output state taint destroy" | grep -w "$ACTION" > /dev/null; then + if [ "$ACTION" = "init" ]; then + echo "[INFO] init tf on ENV: ${ENV}" + terraform "$ACTION" -backend-config="${BACKEND_CONFIG_PATH}" $other + elif [ "$ACTION" = "output" ] || [ "$ACTION" = "state" ] || [ "$ACTION" = "taint" ]; then + # init terraform backend + terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" + terraform "$ACTION" $other + else + # init terraform backend + echo "[INFO] init tf on ENV: ${ENV}" + terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" + + echo "[INFO] run tf with: ${ACTION} on ENV: ${ENV} and other: >${other}<" + terraform "${ACTION}" -var-file="./env/${ENV}/terraform.tfvars" -compact-warnings $other + fi +else + echo "[ERROR] ACTION not allowed." + exit 1 +fi diff --git a/.terraform-version b/.terraform-version new file mode 100644 index 000000000..95b25aee2 --- /dev/null +++ b/.terraform-version @@ -0,0 +1 @@ +1.3.6 From ed129588bc2a01a2f355d2a1f733831b09090701 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Wed, 7 Dec 2022 18:02:54 +0100 Subject: [PATCH 03/73] edit --- .opex/config.yaml | 6 +- azure-dashboard/01_opex.tf | 370 ++++++++++++++++++------------------- 2 files changed, 190 insertions(+), 186 deletions(-) diff --git a/.opex/config.yaml b/.opex/config.yaml index a1c3e19a4..264442b87 100644 --- a/.opex/config.yaml +++ b/.opex/config.yaml @@ -1,8 +1,12 @@ oa3_spec: myfolder/api_backend.yaml -name: My dashboard +name: Opexd_test location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/azure-dashboard/01_opex.tf b/azure-dashboard/01_opex.tf index 599740cee..8c6e24818 100644 --- a/azure-dashboard/01_opex.tf +++ b/azure-dashboard/01_opex.tf @@ -1,6 +1,6 @@ locals { - name = "${var.prefix}-${var.env_short}-My_dashboard" + name = "${var.prefix}-${var.env_short}-Opexd_test" dashboard_base_addr = "https://portal.azure.com/#@pagopait.onmicrosoft.com/dashboard/arm" } @@ -72,7 +72,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -134,7 +134,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -193,7 +193,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -251,7 +251,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -330,7 +330,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -388,7 +388,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -466,7 +466,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -528,7 +528,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -587,7 +587,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -645,7 +645,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -724,7 +724,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -782,7 +782,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -860,7 +860,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -922,7 +922,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -981,7 +981,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -1039,7 +1039,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -1118,7 +1118,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -1176,7 +1176,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -1254,7 +1254,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -1316,7 +1316,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -1375,7 +1375,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -1433,7 +1433,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -1512,7 +1512,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -1570,7 +1570,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -1648,7 +1648,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -1710,7 +1710,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -1769,7 +1769,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -1827,7 +1827,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -1906,7 +1906,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -1964,7 +1964,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -2042,7 +2042,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -2104,7 +2104,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -2163,7 +2163,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -2221,7 +2221,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -2300,7 +2300,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -2358,7 +2358,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -2436,7 +2436,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -2498,7 +2498,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -2557,7 +2557,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -2615,7 +2615,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -2694,7 +2694,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -2752,7 +2752,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -2830,7 +2830,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -2892,7 +2892,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -2951,7 +2951,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -3009,7 +3009,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -3088,7 +3088,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -3146,7 +3146,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -3224,7 +3224,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -3286,7 +3286,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -3345,7 +3345,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -3403,7 +3403,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -3482,7 +3482,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -3540,7 +3540,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -3618,7 +3618,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -3680,7 +3680,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -3739,7 +3739,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -3797,7 +3797,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -3876,7 +3876,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -3934,7 +3934,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -4012,7 +4012,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -4074,7 +4074,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -4133,7 +4133,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -4191,7 +4191,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -4270,7 +4270,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -4328,7 +4328,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -4406,7 +4406,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -4468,7 +4468,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -4527,7 +4527,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -4585,7 +4585,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -4664,7 +4664,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -4722,7 +4722,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -4800,7 +4800,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -4862,7 +4862,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -4921,7 +4921,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -4979,7 +4979,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -5058,7 +5058,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -5116,7 +5116,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -5194,7 +5194,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -5256,7 +5256,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -5315,7 +5315,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -5373,7 +5373,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -5452,7 +5452,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -5510,7 +5510,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -5588,7 +5588,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -5650,7 +5650,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -5709,7 +5709,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -5767,7 +5767,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -5846,7 +5846,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -5904,7 +5904,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -5982,7 +5982,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -6044,7 +6044,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -6103,7 +6103,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -6161,7 +6161,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -6240,7 +6240,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -6298,7 +6298,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -6376,7 +6376,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -6438,7 +6438,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -6497,7 +6497,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -6555,7 +6555,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -6634,7 +6634,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -6692,7 +6692,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -6770,7 +6770,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -6832,7 +6832,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -6891,7 +6891,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -6949,7 +6949,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -7028,7 +7028,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -7086,7 +7086,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -7164,7 +7164,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -7226,7 +7226,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -7285,7 +7285,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -7343,7 +7343,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -7422,7 +7422,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -7480,7 +7480,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -7558,7 +7558,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -7620,7 +7620,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -7679,7 +7679,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -7737,7 +7737,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -7816,7 +7816,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -7874,7 +7874,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -7952,7 +7952,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -8014,7 +8014,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -8073,7 +8073,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -8131,7 +8131,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -8210,7 +8210,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -8268,7 +8268,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -8346,7 +8346,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -8408,7 +8408,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -8467,7 +8467,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -8525,7 +8525,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -8604,7 +8604,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -8662,7 +8662,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -8740,7 +8740,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -8802,7 +8802,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -8861,7 +8861,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -8919,7 +8919,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -8998,7 +8998,7 @@ resource "azurerm_portal_dashboard" "this" { }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -9056,7 +9056,7 @@ resource "azurerm_portal_dashboard" "this" { "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -9149,7 +9149,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_0" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9191,7 +9191,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_0" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9232,7 +9232,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_1" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9274,7 +9274,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_1" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9315,7 +9315,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_2" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9357,7 +9357,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_2" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9398,7 +9398,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_3" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9440,7 +9440,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_3" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9481,7 +9481,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_4" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9523,7 +9523,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_4" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9564,7 +9564,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_5" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9606,7 +9606,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_5" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9647,7 +9647,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_6" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9689,7 +9689,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_6" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9730,7 +9730,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_7" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9772,7 +9772,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_7" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9813,7 +9813,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_8" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9855,7 +9855,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_8" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9896,7 +9896,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_9" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9938,7 +9938,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_9" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -9979,7 +9979,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_10" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10021,7 +10021,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_10" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10062,7 +10062,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_11" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10104,7 +10104,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_11" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10145,7 +10145,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_12" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10187,7 +10187,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_12" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10228,7 +10228,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_13" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10270,7 +10270,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_13" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10311,7 +10311,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_14" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10353,7 +10353,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_14" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10394,7 +10394,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_15" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10436,7 +10436,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_15" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10477,7 +10477,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_16" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10519,7 +10519,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_16" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10560,7 +10560,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_17" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10602,7 +10602,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_17" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10643,7 +10643,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_18" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10685,7 +10685,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_18" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10726,7 +10726,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_19" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10768,7 +10768,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_19" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10809,7 +10809,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_20" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10851,7 +10851,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_20" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10892,7 +10892,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_21" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10934,7 +10934,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_21" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -10975,7 +10975,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_22" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 0.99; AzureDiagnostics | where originalHost_s in (api_hosts) @@ -11017,7 +11017,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_22" { query = <<-QUERY -let api_hosts = datatable (name: string) ["localhost"]; +let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; let threshold = 1; AzureDiagnostics | where originalHost_s in (api_hosts) From f0d49501e97c564dd401e7c3420ae52a38a16fbe Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Tue, 13 Dec 2022 09:27:30 +0100 Subject: [PATCH 04/73] fixed raw file --- azure-dashboard-raw/azure_dashboard_raw.json | 418 +++++++++---------- 1 file changed, 209 insertions(+), 209 deletions(-) diff --git a/azure-dashboard-raw/azure_dashboard_raw.json b/azure-dashboard-raw/azure_dashboard_raw.json index 120ae18a4..3e7743138 100644 --- a/azure-dashboard-raw/azure_dashboard_raw.json +++ b/azure-dashboard-raw/azure_dashboard_raw.json @@ -26,7 +26,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -57,7 +57,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -119,7 +119,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -145,7 +145,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -176,7 +176,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -234,7 +234,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -280,7 +280,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -311,7 +311,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -369,7 +369,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -415,7 +415,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -446,7 +446,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -508,7 +508,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -534,7 +534,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -565,7 +565,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -623,7 +623,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -669,7 +669,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -700,7 +700,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -758,7 +758,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -804,7 +804,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -835,7 +835,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -897,7 +897,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -923,7 +923,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -954,7 +954,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -1012,7 +1012,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -1058,7 +1058,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -1089,7 +1089,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -1147,7 +1147,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -1193,7 +1193,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -1224,7 +1224,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -1286,7 +1286,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -1312,7 +1312,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -1343,7 +1343,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -1401,7 +1401,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -1447,7 +1447,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -1478,7 +1478,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -1536,7 +1536,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -1582,7 +1582,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -1613,7 +1613,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -1675,7 +1675,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -1701,7 +1701,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -1732,7 +1732,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -1790,7 +1790,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -1836,7 +1836,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -1867,7 +1867,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -1925,7 +1925,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -1971,7 +1971,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2002,7 +2002,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -2064,7 +2064,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -2090,7 +2090,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2121,7 +2121,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -2179,7 +2179,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -2225,7 +2225,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2256,7 +2256,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -2314,7 +2314,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -2360,7 +2360,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2391,7 +2391,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -2453,7 +2453,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -2479,7 +2479,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2510,7 +2510,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -2568,7 +2568,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -2614,7 +2614,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2645,7 +2645,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -2703,7 +2703,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -2749,7 +2749,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2780,7 +2780,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -2842,7 +2842,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -2868,7 +2868,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -2899,7 +2899,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -2957,7 +2957,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -3003,7 +3003,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3034,7 +3034,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -3092,7 +3092,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -3138,7 +3138,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3169,7 +3169,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -3231,7 +3231,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -3257,7 +3257,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3288,7 +3288,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -3346,7 +3346,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -3392,7 +3392,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3423,7 +3423,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -3481,7 +3481,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -3527,7 +3527,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3558,7 +3558,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -3620,7 +3620,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -3646,7 +3646,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3677,7 +3677,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -3735,7 +3735,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -3781,7 +3781,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3812,7 +3812,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -3870,7 +3870,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -3916,7 +3916,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -3947,7 +3947,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -4009,7 +4009,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -4035,7 +4035,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4066,7 +4066,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -4124,7 +4124,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -4170,7 +4170,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4201,7 +4201,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -4259,7 +4259,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -4305,7 +4305,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4336,7 +4336,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -4398,7 +4398,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -4424,7 +4424,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4455,7 +4455,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -4513,7 +4513,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -4559,7 +4559,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4590,7 +4590,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -4648,7 +4648,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -4694,7 +4694,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4725,7 +4725,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -4787,7 +4787,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -4813,7 +4813,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4844,7 +4844,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -4902,7 +4902,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -4948,7 +4948,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -4979,7 +4979,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -5037,7 +5037,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -5083,7 +5083,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -5114,7 +5114,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -5176,7 +5176,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -5202,7 +5202,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -5233,7 +5233,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -5291,7 +5291,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -5337,7 +5337,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -5368,7 +5368,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -5426,7 +5426,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -5472,7 +5472,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -5503,7 +5503,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -5565,7 +5565,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -5591,7 +5591,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -5622,7 +5622,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -5680,7 +5680,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -5726,7 +5726,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -5757,7 +5757,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -5815,7 +5815,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -5861,7 +5861,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -5892,7 +5892,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -5954,7 +5954,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -5980,7 +5980,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6011,7 +6011,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -6069,7 +6069,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -6115,7 +6115,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6146,7 +6146,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -6204,7 +6204,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -6250,7 +6250,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6281,7 +6281,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -6343,7 +6343,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -6369,7 +6369,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6400,7 +6400,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -6458,7 +6458,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -6504,7 +6504,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6535,7 +6535,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -6593,7 +6593,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -6639,7 +6639,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6670,7 +6670,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -6732,7 +6732,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -6758,7 +6758,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6789,7 +6789,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -6847,7 +6847,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -6893,7 +6893,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -6924,7 +6924,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -6982,7 +6982,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -7028,7 +7028,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7059,7 +7059,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -7121,7 +7121,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -7147,7 +7147,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7178,7 +7178,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -7236,7 +7236,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -7282,7 +7282,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7313,7 +7313,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -7371,7 +7371,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -7417,7 +7417,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7448,7 +7448,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -7510,7 +7510,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -7536,7 +7536,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7567,7 +7567,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -7625,7 +7625,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -7671,7 +7671,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7702,7 +7702,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -7760,7 +7760,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -7806,7 +7806,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7837,7 +7837,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -7899,7 +7899,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -7925,7 +7925,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -7956,7 +7956,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -8014,7 +8014,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -8060,7 +8060,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -8091,7 +8091,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -8149,7 +8149,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -8195,7 +8195,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -8226,7 +8226,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -8288,7 +8288,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -8314,7 +8314,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -8345,7 +8345,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -8403,7 +8403,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -8449,7 +8449,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -8480,7 +8480,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -8538,7 +8538,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -8584,7 +8584,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -8615,7 +8615,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "isOptional": true }, { @@ -8677,7 +8677,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", "PartTitle": "Availability (5m)" } } @@ -8703,7 +8703,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -8734,7 +8734,7 @@ }, { "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "isOptional": true }, { @@ -8792,7 +8792,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"localhost\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", + "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", "SpecificChart": "StackedArea", "PartTitle": "Response Codes (5m)", "Dimensions": { @@ -8838,7 +8838,7 @@ { "name": "Scope", "value": { - "resourceIds": ["/subscriptions/uuid/resourceGroups/my-rg/providers/Microsoft.Network/applicationGateways/my-gtw"] + "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] }, "isOptional": true }, @@ -8869,7 +8869,7 @@ }, { "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "isOptional": true }, { @@ -8927,7 +8927,7 @@ "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", "settings": { "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"localhost\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", + "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", "SpecificChart": "Line", "PartTitle": "Percentile Response Time (5m)", "Dimensions": { @@ -8999,11 +8999,11 @@ } } }, - "name": "My dashboard", + "name": "Opexd_test", "type": "Microsoft.Portal/dashboards", "location": "West Europe", "tags": { - "hidden-title": "My dashboard" + "hidden-title": "Opexd_test" }, "apiVersion": "2015-08-01-preview" } From e83195124fe7bea564feed7d31ab846544989898 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 12:27:46 +0100 Subject: [PATCH 05/73] ready for prod v2.0 --- .github/workflows/opex_api_backend.yml | 89 + .identity/.terraform.lock.hcl | 9 +- .identity/01_data.tf | 2 +- .identity/02_application_master.tf | 2 +- .identity/02_application_pullrequest_auth.tf | 2 +- .../config_prod.yaml} | 0 .../api_backend}/env/prod/backend.ini | 0 .../api_backend}/env/prod/backend.tfvars | 0 .../api_backend}/env/prod/terraform.tfvars | 0 .terraform-version | 2 +- .../api_backend}/01_opex.tf | 0 .../api_backend}/99_main.tf | 0 .../api_backend}/99_variables.tf | 0 .../api_backend/env/prod/backend.ini | 1 + .../api_backend/env/prod/backend.tfvars | 4 + .../api_backend/env/prod/terraform.tfvars | 10 + .../api_backend}/terraform.sh | 0 azure-dashboard-raw/azure_dashboard_raw.json | 9009 ----------------- azure-dashboard/.terraform-version | 1 - 19 files changed, 116 insertions(+), 9015 deletions(-) create mode 100644 .github/workflows/opex_api_backend.yml rename .opex/{config.yaml => api_backend/config_prod.yaml} (100%) rename {azure-dashboard => .opex/api_backend}/env/prod/backend.ini (100%) rename {azure-dashboard => .opex/api_backend}/env/prod/backend.tfvars (100%) rename {azure-dashboard => .opex/api_backend}/env/prod/terraform.tfvars (100%) rename {azure-dashboard => _old_azure-dashboard/api_backend}/01_opex.tf (100%) rename {azure-dashboard => _old_azure-dashboard/api_backend}/99_main.tf (100%) rename {azure-dashboard => _old_azure-dashboard/api_backend}/99_variables.tf (100%) create mode 100644 _old_azure-dashboard/api_backend/env/prod/backend.ini create mode 100644 _old_azure-dashboard/api_backend/env/prod/backend.tfvars create mode 100644 _old_azure-dashboard/api_backend/env/prod/terraform.tfvars rename {azure-dashboard => _old_azure-dashboard/api_backend}/terraform.sh (100%) delete mode 100644 azure-dashboard-raw/azure_dashboard_raw.json delete mode 100644 azure-dashboard/.terraform-version diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml new file mode 100644 index 000000000..2c3f1c7ab --- /dev/null +++ b/.github/workflows/opex_api_backend.yml @@ -0,0 +1,89 @@ +name: Create Dashboard + +# Controls when the workflow will run +on: + push: + branches: + # - master + - opex-demo + paths: + - '.github/workflows/opex_api_backend.yml' + - '.opex/api_backend/*' + # - 'azure-dashboard/api_backend/*' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_backend + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + - name: Read terraform version + id: read-version + shell: bash + run: | + echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV + + - name: Setup Terraform + # from https://github.com/hashicorp/setup-terraform/commits/main + uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 + with: + terraform_version: ${{ env.TERRAFORM_VERSION }} + + - name: Login + id: login + # from https://github.com/Azure/login/commits/master + uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + with: + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + + # this action create a folder named /azure-dashboard + - uses: pagopa/opex-dashboard-action@main + with: + template: azure-dashboard + config: ./opex/${API_NAME}/config_${{ matrix.environment }}.yaml + + # we need to set env variables in the folder /azure-dashboard + - name: Copy Environments + run: | + cp -R ./.opex/${API_NAME}/env ./azure-dashboard + + # now is possible to launch the command: terraform apply + - name: Terraform Apply + shell: bash + run: | + cd ./azure-dashboard + export ARM_CLIENT_ID="${CLIENT_ID}" + export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) + export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) + export ARM_USE_OIDC=true + + bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve diff --git a/.identity/.terraform.lock.hcl b/.identity/.terraform.lock.hcl index 69c6e16fe..3522ed376 100644 --- a/.identity/.terraform.lock.hcl +++ b/.identity/.terraform.lock.hcl @@ -5,7 +5,10 @@ provider "registry.terraform.io/hashicorp/azuread" { version = "2.30.0" constraints = "2.30.0" hashes = [ + "h1:MimDtBEnmdMwbriZQzga/kCjDZ1G0+QLVQjrYdBEpdc=", + "h1:Uw4TcmJBEJ71h+oCwwidlkk5jFpyFRDPAFCMs/bT/cw=", "h1:WnSPiREAFwnBUKREokMdHQ8Cjs47MzvS9pG8VS1ktec=", + "h1:xzNKb+lWPsBTxJiaAJ8ECZnY+D6QNM9tA1qpEncIba0=", "zh:1c3e89cf19118fc07d7b04257251fc9897e722c16e0a0df7b07fcd261f8c12e7", "zh:2e62c193030e04ebb10cc0526119cf69824bf2d7e4ea5a2f45bd5d5fb7221d36", "zh:2f3c7a35257332d68b778cefc5201a5f044e4914dd03794a4da662ddfe756483", @@ -22,9 +25,13 @@ provider "registry.terraform.io/hashicorp/azuread" { } provider "registry.terraform.io/hashicorp/azurerm" { - version = "3.33.0" + version = "3.33.0" + constraints = "3.33.0" hashes = [ + "h1:KBlWanRsjlvBrADF9+mUNqI9UpHj3R0l7c2fLC/K2u4=", "h1:UEAlSpnLUdpXP3hIyZRhTG3iYb++FJejLRT2AddA8SU=", + "h1:fjp6eiO7KQpIFAMcKVT9x0ci8IYOplJRywdmXC1iYSE=", + "h1:pXB6SKE4NKdf+LepsQjrLcBnVTL5ejeKvx/kyojai6c=", "zh:136d9c642746d8d84e62ecd8ab0c7dc015eac504c1f068e06fad438ae222d934", "zh:266e64b8e32a94ddcc20954ebad1d8ff3921d318addf576e981b1390e5d5ba79", "zh:3bd84a1e5b3bbe34a5870f271d6a5bf9b35a4c924db32b450a1fb53bc910c37a", diff --git a/.identity/01_data.tf b/.identity/01_data.tf index 091424dcb..ad374435c 100644 --- a/.identity/01_data.tf +++ b/.identity/01_data.tf @@ -1,5 +1,5 @@ data "azurerm_storage_account" "tfstate_app" { - name = "tfappprodio" + name = "tfapp${lower(replace(data.azurerm_subscription.current.display_name, "-", ""))}" resource_group_name = "terraform-state-rg" } diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index 7da2ab66f..006f98d97 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,7 +12,7 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" } output "azure_master_client_id" { diff --git a/.identity/02_application_pullrequest_auth.tf b/.identity/02_application_pullrequest_auth.tf index cfd985f11..f3379cfba 100644 --- a/.identity/02_application_pullrequest_auth.tf +++ b/.identity/02_application_pullrequest_auth.tf @@ -12,6 +12,6 @@ resource "azurerm_role_assignment" "pullrequest_terraform_storage_account_tfstat resource "azurerm_role_assignment" "pullrequest_terraform_resource_group_dashboards" { scope = data.azurerm_resource_group.dashboards.id - role_definition_name = "Contributor" + role_definition_name = "Reader" principal_id = azuread_service_principal.pullrequest.object_id } diff --git a/.opex/config.yaml b/.opex/api_backend/config_prod.yaml similarity index 100% rename from .opex/config.yaml rename to .opex/api_backend/config_prod.yaml diff --git a/azure-dashboard/env/prod/backend.ini b/.opex/api_backend/env/prod/backend.ini similarity index 100% rename from azure-dashboard/env/prod/backend.ini rename to .opex/api_backend/env/prod/backend.ini diff --git a/azure-dashboard/env/prod/backend.tfvars b/.opex/api_backend/env/prod/backend.tfvars similarity index 100% rename from azure-dashboard/env/prod/backend.tfvars rename to .opex/api_backend/env/prod/backend.tfvars diff --git a/azure-dashboard/env/prod/terraform.tfvars b/.opex/api_backend/env/prod/terraform.tfvars similarity index 100% rename from azure-dashboard/env/prod/terraform.tfvars rename to .opex/api_backend/env/prod/terraform.tfvars diff --git a/.terraform-version b/.terraform-version index 95b25aee2..d0149fef7 100644 --- a/.terraform-version +++ b/.terraform-version @@ -1 +1 @@ -1.3.6 +1.3.4 diff --git a/azure-dashboard/01_opex.tf b/_old_azure-dashboard/api_backend/01_opex.tf similarity index 100% rename from azure-dashboard/01_opex.tf rename to _old_azure-dashboard/api_backend/01_opex.tf diff --git a/azure-dashboard/99_main.tf b/_old_azure-dashboard/api_backend/99_main.tf similarity index 100% rename from azure-dashboard/99_main.tf rename to _old_azure-dashboard/api_backend/99_main.tf diff --git a/azure-dashboard/99_variables.tf b/_old_azure-dashboard/api_backend/99_variables.tf similarity index 100% rename from azure-dashboard/99_variables.tf rename to _old_azure-dashboard/api_backend/99_variables.tf diff --git a/_old_azure-dashboard/api_backend/env/prod/backend.ini b/_old_azure-dashboard/api_backend/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/_old_azure-dashboard/api_backend/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/_old_azure-dashboard/api_backend/env/prod/backend.tfvars b/_old_azure-dashboard/api_backend/env/prod/backend.tfvars new file mode 100644 index 000000000..de73692f8 --- /dev/null +++ b/_old_azure-dashboard/api_backend/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_backend.tfstate" diff --git a/_old_azure-dashboard/api_backend/env/prod/terraform.tfvars b/_old_azure-dashboard/api_backend/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/_old_azure-dashboard/api_backend/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/azure-dashboard/terraform.sh b/_old_azure-dashboard/api_backend/terraform.sh similarity index 100% rename from azure-dashboard/terraform.sh rename to _old_azure-dashboard/api_backend/terraform.sh diff --git a/azure-dashboard-raw/azure_dashboard_raw.json b/azure-dashboard-raw/azure_dashboard_raw.json deleted file mode 100644 index 3e7743138..000000000 --- a/azure-dashboard-raw/azure_dashboard_raw.json +++ /dev/null @@ -1,9009 +0,0 @@ - -{ - "properties": { - "lenses": { - "0": { - "order": 0, - "parts": { - - "0": { - "position": { - "x": 0, - "y": 0, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "1": { - "position": { - "x": 6, - "y": 0, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "2": { - "position": { - "x": 12, - "y": 0, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "3": { - "position": { - "x": 0, - "y": 4, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}/preferences", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "4": { - "position": { - "x": 6, - "y": 4, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}/preferences", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "5": { - "position": { - "x": 12, - "y": 4, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}/preferences", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "6": { - "position": { - "x": 0, - "y": 8, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "7": { - "position": { - "x": 6, - "y": 8, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "8": { - "position": { - "x": 12, - "y": 8, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "9": { - "position": { - "x": 0, - "y": 12, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "10": { - "position": { - "x": 6, - "y": 12, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "11": { - "position": { - "x": 12, - "y": 12, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "12": { - "position": { - "x": 0, - "y": 16, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "13": { - "position": { - "x": 6, - "y": 16, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "14": { - "position": { - "x": 12, - "y": 16, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "15": { - "position": { - "x": 0, - "y": 20, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}/message-status", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "16": { - "position": { - "x": 6, - "y": 20, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}/message-status", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "17": { - "position": { - "x": 12, - "y": 20, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}/message-status", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "18": { - "position": { - "x": 0, - "y": 24, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "19": { - "position": { - "x": 6, - "y": 24, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "20": { - "position": { - "x": 12, - "y": 24, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "21": { - "position": { - "x": 0, - "y": 28, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "22": { - "position": { - "x": 6, - "y": 28, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "23": { - "position": { - "x": 12, - "y": 28, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "24": { - "position": { - "x": 0, - "y": 32, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "25": { - "position": { - "x": 6, - "y": 32, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "26": { - "position": { - "x": 12, - "y": 32, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "27": { - "position": { - "x": 0, - "y": 36, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "28": { - "position": { - "x": 6, - "y": 36, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "29": { - "position": { - "x": 12, - "y": 36, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "30": { - "position": { - "x": 0, - "y": 40, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "31": { - "position": { - "x": 6, - "y": 40, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "32": { - "position": { - "x": 12, - "y": 40, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "33": { - "position": { - "x": 0, - "y": 44, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/api-profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "34": { - "position": { - "x": 6, - "y": 44, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/api-profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "35": { - "position": { - "x": 12, - "y": 44, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/api-profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "36": { - "position": { - "x": 0, - "y": 48, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/email-validation-process", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "37": { - "position": { - "x": 6, - "y": 48, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/email-validation-process", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "38": { - "position": { - "x": 12, - "y": 48, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/email-validation-process", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "39": { - "position": { - "x": 0, - "y": 52, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-metadata", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "40": { - "position": { - "x": 6, - "y": 52, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-metadata", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "41": { - "position": { - "x": 12, - "y": 52, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-metadata", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "42": { - "position": { - "x": 0, - "y": 56, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/installations/{installationID}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "43": { - "position": { - "x": 6, - "y": 56, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/installations/{installationID}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "44": { - "position": { - "x": 12, - "y": 56, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/installations/{installationID}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "45": { - "position": { - "x": 0, - "y": 60, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/session", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "46": { - "position": { - "x": 6, - "y": 60, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/session", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "47": { - "position": { - "x": 12, - "y": 60, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/session", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "48": { - "position": { - "x": 0, - "y": 64, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/sessions", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "49": { - "position": { - "x": 6, - "y": 64, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/sessions", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "50": { - "position": { - "x": 12, - "y": 64, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/sessions", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "51": { - "position": { - "x": 0, - "y": 68, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/token/support", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "52": { - "position": { - "x": 6, - "y": 68, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/token/support", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "53": { - "position": { - "x": 12, - "y": 68, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/token/support", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "54": { - "position": { - "x": 0, - "y": 72, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-requests/{rptId}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "55": { - "position": { - "x": 6, - "y": 72, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-requests/{rptId}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "56": { - "position": { - "x": 12, - "y": 72, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-requests/{rptId}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "57": { - "position": { - "x": 0, - "y": 76, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "58": { - "position": { - "x": 6, - "y": 76, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "59": { - "position": { - "x": 12, - "y": 76, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "60": { - "position": { - "x": 0, - "y": 80, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations/{codiceContestoPagamento}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "61": { - "position": { - "x": 6, - "y": 80, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations/{codiceContestoPagamento}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "62": { - "position": { - "x": 12, - "y": 80, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations/{codiceContestoPagamento}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "63": { - "position": { - "x": 0, - "y": 84, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "64": { - "position": { - "x": 6, - "y": 84, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "65": { - "position": { - "x": 12, - "y": 84, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - - "66": { - "position": { - "x": 0, - "y": 88, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing/{choice}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "67": { - "position": { - "x": 6, - "y": 88, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing/{choice}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "68": { - "position": { - "x": 12, - "y": 88, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": ["/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway"] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing/{choice}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - } - - } - } - }, - "metadata": { - "model": { - "timeRange": { - "value": { - "relative": { - "duration": 24, - "timeUnit": 1 - } - }, - "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" - }, - "filterLocale": { - "value": "en-us" - }, - "filters": { - "value": { - "MsPortalFx_TimeRange": { - "model": { - "format": "local", - "granularity": "auto", - "relative": "48h" - }, - "displayCache": { - "name": "Local Time", - "value": "Past 48 hours" - }, - "filteredPartIds": [ - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ed", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ef", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f1", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f3", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f5", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f7", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f9", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fb", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fd" - ] - } - } - } - } - } - }, - "name": "Opexd_test", - "type": "Microsoft.Portal/dashboards", - "location": "West Europe", - "tags": { - "hidden-title": "Opexd_test" - }, - "apiVersion": "2015-08-01-preview" -} diff --git a/azure-dashboard/.terraform-version b/azure-dashboard/.terraform-version deleted file mode 100644 index d0149fef7..000000000 --- a/azure-dashboard/.terraform-version +++ /dev/null @@ -1 +0,0 @@ -1.3.4 From 8e738853f38f9cee37aff5ae9b7ec3519221cf4f Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 12:30:50 +0100 Subject: [PATCH 06/73] try --- .github/workflows/opex_api_backend.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 2c3f1c7ab..1368a010b 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -69,12 +69,12 @@ jobs: - uses: pagopa/opex-dashboard-action@main with: template: azure-dashboard - config: ./opex/${API_NAME}/config_${{ matrix.environment }}.yaml + config: .opex/${API_NAME}/config_${{ matrix.environment }}.yaml # we need to set env variables in the folder /azure-dashboard - name: Copy Environments run: | - cp -R ./.opex/${API_NAME}/env ./azure-dashboard + cp -R .opex/${API_NAME}/env ./azure-dashboard # now is possible to launch the command: terraform apply - name: Terraform Apply From 565ee01b1747e63407368dd7aa11827447240525 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 12:33:35 +0100 Subject: [PATCH 07/73] daje --- .github/workflows/opex_api_backend.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 1368a010b..49a4aecb3 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -1,4 +1,4 @@ -name: Create Dashboard +name: Opex Dashboard api_backend # Controls when the workflow will run on: @@ -69,7 +69,7 @@ jobs: - uses: pagopa/opex-dashboard-action@main with: template: azure-dashboard - config: .opex/${API_NAME}/config_${{ matrix.environment }}.yaml + config: .opex/${{ env.API_NAME }}/config_${{ matrix.environment }}.yaml # we need to set env variables in the folder /azure-dashboard - name: Copy Environments From 9a222a9f1f5997b5544013f8f92242a4df1a6363 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 12:36:26 +0100 Subject: [PATCH 08/73] add dummy --- azure-dashboard/dummy | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 azure-dashboard/dummy diff --git a/azure-dashboard/dummy b/azure-dashboard/dummy new file mode 100644 index 000000000..e69de29bb From e505523461d80d71061355c7ffdefddc393d9e17 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 12:37:27 +0100 Subject: [PATCH 09/73] rerun --- .github/workflows/opex_api_backend.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 49a4aecb3..074b59e5f 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -9,7 +9,7 @@ on: paths: - '.github/workflows/opex_api_backend.yml' - '.opex/api_backend/*' - # - 'azure-dashboard/api_backend/*' + - 'azure-dashboard/*' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From 26bfea1275e0bc7fbbc8543ec12ba027b61069b3 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 12:50:11 +0100 Subject: [PATCH 10/73] clean --- .github/workflows/opex_api_backend.yml | 9 +++++---- .../{config_prod.yaml => env/prod/config.yaml} | 4 ++-- azure-dashboard/dummy | 0 3 files changed, 7 insertions(+), 6 deletions(-) rename .opex/api_backend/{config_prod.yaml => env/prod/config.yaml} (79%) delete mode 100644 azure-dashboard/dummy diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 074b59e5f..28b2c6a0b 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -15,6 +15,7 @@ on: workflow_dispatch: env: + TEMPLATE_DIR: azure-dashboard CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b @@ -68,19 +69,19 @@ jobs: # this action create a folder named /azure-dashboard - uses: pagopa/opex-dashboard-action@main with: - template: azure-dashboard - config: .opex/${{ env.API_NAME }}/config_${{ matrix.environment }}.yaml + template: ${{ env.TEMPLATE_DIR }} + config: .opex/${{ env.API_NAME }}/${{ matrix.environment }}/config.yaml # we need to set env variables in the folder /azure-dashboard - name: Copy Environments run: | - cp -R .opex/${API_NAME}/env ./azure-dashboard + cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} # now is possible to launch the command: terraform apply - name: Terraform Apply shell: bash run: | - cd ./azure-dashboard + cd ./${TEMPLATE_DIR} export ARM_CLIENT_ID="${CLIENT_ID}" export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) diff --git a/.opex/api_backend/config_prod.yaml b/.opex/api_backend/env/prod/config.yaml similarity index 79% rename from .opex/api_backend/config_prod.yaml rename to .opex/api_backend/env/prod/config.yaml index 264442b87..6113a774d 100644 --- a/.opex/api_backend/config_prod.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -4,8 +4,8 @@ location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA overrides: hosts: - app-backend.io.italia.it diff --git a/azure-dashboard/dummy b/azure-dashboard/dummy deleted file mode 100644 index e69de29bb..000000000 From ee85f3d35f52daf4abffd2855870a97e05d3af44 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 12:53:01 +0100 Subject: [PATCH 11/73] fix --- .github/workflows/opex_api_backend.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 28b2c6a0b..1779417e6 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -70,7 +70,7 @@ jobs: - uses: pagopa/opex-dashboard-action@main with: template: ${{ env.TEMPLATE_DIR }} - config: .opex/${{ env.API_NAME }}/${{ matrix.environment }}/config.yaml + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml # we need to set env variables in the folder /azure-dashboard - name: Copy Environments From 6f034b029b3edb6c027592c61b9125d9abc1aae4 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:00:43 +0100 Subject: [PATCH 12/73] try --- .opex/api_backend/env/prod/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index 6113a774d..ffed1f37a 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -1,4 +1,4 @@ -oa3_spec: myfolder/api_backend.yaml +oa3_spec: api_backend.yaml name: Opexd_test location: West Europe timespan: 5m From db37d8d5b7566b29075ef86dcd6d551107c4a147 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:03:21 +0100 Subject: [PATCH 13/73] try --- .opex/api_backend/env/prod/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index ffed1f37a..77d35fce1 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -1,5 +1,5 @@ oa3_spec: api_backend.yaml -name: Opexd_test +name: opex_api_backend location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway From 07c1c9231d709946edf5ce6941c65dc6e44e1b60 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:08:33 +0100 Subject: [PATCH 14/73] fix --- .github/workflows/opex_api_backend.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 1779417e6..bcb570856 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -8,8 +8,8 @@ on: - opex-demo paths: - '.github/workflows/opex_api_backend.yml' - - '.opex/api_backend/*' - - 'azure-dashboard/*' + - '.opex/api_backend/**' + # - 'azure-dashboard/*' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From f57c3abca79427efcb0baa528961b277a7833b5b Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:25:35 +0100 Subject: [PATCH 15/73] fix payment-requests/{rptId} --- .github/workflows/opex_api_backend.yml | 1 - .opex/api_backend/env/prod/config.yaml | 4 + _old_azure-dashboard/api_backend/01_opex.tf | 11044 ---------------- _old_azure-dashboard/api_backend/99_main.tf | 16 - .../api_backend/99_variables.tf | 26 - .../api_backend/env/prod/backend.ini | 1 - .../api_backend/env/prod/backend.tfvars | 4 - .../api_backend/env/prod/terraform.tfvars | 10 - _old_azure-dashboard/api_backend/terraform.sh | 63 - 9 files changed, 4 insertions(+), 11165 deletions(-) delete mode 100644 _old_azure-dashboard/api_backend/01_opex.tf delete mode 100644 _old_azure-dashboard/api_backend/99_main.tf delete mode 100644 _old_azure-dashboard/api_backend/99_variables.tf delete mode 100644 _old_azure-dashboard/api_backend/env/prod/backend.ini delete mode 100644 _old_azure-dashboard/api_backend/env/prod/backend.tfvars delete mode 100644 _old_azure-dashboard/api_backend/env/prod/terraform.tfvars delete mode 100755 _old_azure-dashboard/api_backend/terraform.sh diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index bcb570856..ae3a4328f 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -9,7 +9,6 @@ on: paths: - '.github/workflows/opex_api_backend.yml' - '.opex/api_backend/**' - # - 'azure-dashboard/*' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index 77d35fce1..f1ca5ac3c 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -10,3 +10,7 @@ overrides: hosts: - app-backend.io.italia.it - api-app.io.pagopa.it + endpoints: + /api/v1/payment-requests/{rptId}: + response_time_threshold: 7 + availability_threshold: 0.25 diff --git a/_old_azure-dashboard/api_backend/01_opex.tf b/_old_azure-dashboard/api_backend/01_opex.tf deleted file mode 100644 index 8c6e24818..000000000 --- a/_old_azure-dashboard/api_backend/01_opex.tf +++ /dev/null @@ -1,11044 +0,0 @@ - -locals { - name = "${var.prefix}-${var.env_short}-Opexd_test" - dashboard_base_addr = "https://portal.azure.com/#@pagopait.onmicrosoft.com/dashboard/arm" -} - -data "azurerm_resource_group" "this" { - name = "dashboards" -} - -resource "azurerm_portal_dashboard" "this" { - name = local.name - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - dashboard_properties = <<-PROPS - { - "lenses": { - "0": { - "order": 0, - "parts": { - "0": { - "position": { - "x": 0, - "y": 0, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "1": { - "position": { - "x": 6, - "y": 0, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "2": { - "position": { - "x": 12, - "y": 0, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "3": { - "position": { - "x": 0, - "y": 4, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}/preferences", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "4": { - "position": { - "x": 6, - "y": 4, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}/preferences", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/services/[^/]+/preferences\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "5": { - "position": { - "x": 12, - "y": 4, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services/{service_id}/preferences", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services/[^/]+/preferences\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "6": { - "position": { - "x": 0, - "y": 8, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "7": { - "position": { - "x": 6, - "y": 8, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/services\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "8": { - "position": { - "x": 12, - "y": 8, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/services", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/services\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "9": { - "position": { - "x": 0, - "y": 12, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "10": { - "position": { - "x": 6, - "y": 12, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/messages\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "11": { - "position": { - "x": 12, - "y": 12, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "12": { - "position": { - "x": 0, - "y": 16, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "13": { - "position": { - "x": 6, - "y": 16, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "14": { - "position": { - "x": 12, - "y": 16, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "15": { - "position": { - "x": 0, - "y": 20, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}/message-status", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "16": { - "position": { - "x": 6, - "y": 20, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}/message-status", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/messages/[^/]+/message-status\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "17": { - "position": { - "x": 12, - "y": 20, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/messages/{id}/message-status", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/messages/[^/]+/message-status\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "18": { - "position": { - "x": 0, - "y": 24, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "19": { - "position": { - "x": 6, - "y": 24, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "20": { - "position": { - "x": 12, - "y": 24, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "21": { - "position": { - "x": 0, - "y": 28, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "22": { - "position": { - "x": 6, - "y": 28, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "23": { - "position": { - "x": 12, - "y": 28, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/legal-messages/{id}/attachments/{attachment_id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/legal-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "24": { - "position": { - "x": 0, - "y": 32, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "25": { - "position": { - "x": 6, - "y": 32, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "26": { - "position": { - "x": 12, - "y": 32, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "27": { - "position": { - "x": 0, - "y": 36, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "28": { - "position": { - "x": 6, - "y": 36, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "29": { - "position": { - "x": 12, - "y": 36, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/third-party-messages/{id}/attachments/{attachment_url}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/third-party-messages/[^/]+/attachments/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "30": { - "position": { - "x": 0, - "y": 40, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "31": { - "position": { - "x": 6, - "y": 40, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "32": { - "position": { - "x": 12, - "y": 40, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "33": { - "position": { - "x": 0, - "y": 44, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/api-profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "34": { - "position": { - "x": 6, - "y": 44, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/api-profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/api-profile\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "35": { - "position": { - "x": 12, - "y": 44, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/api-profile", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/api-profile\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "36": { - "position": { - "x": 0, - "y": 48, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/email-validation-process", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "37": { - "position": { - "x": 6, - "y": 48, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/email-validation-process", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/email-validation-process\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "38": { - "position": { - "x": 12, - "y": 48, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/email-validation-process", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/email-validation-process\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "39": { - "position": { - "x": 0, - "y": 52, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-metadata", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "40": { - "position": { - "x": 6, - "y": 52, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-metadata", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/user-metadata\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "41": { - "position": { - "x": 12, - "y": 52, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-metadata", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-metadata\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "42": { - "position": { - "x": 0, - "y": 56, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/installations/{installationID}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "43": { - "position": { - "x": 6, - "y": 56, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/installations/{installationID}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/installations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "44": { - "position": { - "x": 12, - "y": 56, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/installations/{installationID}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/installations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "45": { - "position": { - "x": 0, - "y": 60, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/session", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "46": { - "position": { - "x": 6, - "y": 60, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/session", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/session\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "47": { - "position": { - "x": 12, - "y": 60, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/session", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/session\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "48": { - "position": { - "x": 0, - "y": 64, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/sessions", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "49": { - "position": { - "x": 6, - "y": 64, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/sessions", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/sessions\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "50": { - "position": { - "x": 12, - "y": 64, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/sessions", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/sessions\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "51": { - "position": { - "x": 0, - "y": 68, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/token/support", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "52": { - "position": { - "x": 6, - "y": 68, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/token/support", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/token/support\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "53": { - "position": { - "x": 12, - "y": 68, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/token/support", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/token/support\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "54": { - "position": { - "x": 0, - "y": 72, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-requests/{rptId}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "55": { - "position": { - "x": 6, - "y": 72, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-requests/{rptId}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/payment-requests/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "56": { - "position": { - "x": 12, - "y": 72, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-requests/{rptId}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-requests/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "57": { - "position": { - "x": 0, - "y": 76, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "58": { - "position": { - "x": 6, - "y": 76, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "59": { - "position": { - "x": 12, - "y": 76, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "60": { - "position": { - "x": 0, - "y": 80, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations/{codiceContestoPagamento}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "61": { - "position": { - "x": 6, - "y": 80, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations/{codiceContestoPagamento}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/payment-activations/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "62": { - "position": { - "x": 12, - "y": 80, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/payment-activations/{codiceContestoPagamento}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/payment-activations/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "63": { - "position": { - "x": 0, - "y": 84, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "64": { - "position": { - "x": 6, - "y": 84, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "65": { - "position": { - "x": 12, - "y": 84, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - }, - "66": { - "position": { - "x": 0, - "y": 88, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Line", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Availability (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing/{choice}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "availability", - "type": "real" - }, - { - "name": "watermark", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 0.99;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n Total=count(),\n Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m)\n| extend availability=toreal(Success) / Total\n\n| project TimeGenerated, availability, watermark=threshold\n| render timechart with (xtitle = \"time\", ytitle= \"availability(%)\")\n\n", - "PartTitle": "Availability (5m)" - } - } - } - }, - "67": { - "position": { - "x": 6, - "y": 88, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "Pie", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Response Codes (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing/{choice}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "httpStatus_d", - "type": "string" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_url = \"/api/v1/user-data-processing/[^/]+\";\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex api_url\n| extend HTTPStatus = case(\n httpStatus_d between (100 .. 199), \"1XX\",\n httpStatus_d between (200 .. 299), \"2XX\",\n httpStatus_d between (300 .. 399), \"3XX\",\n httpStatus_d between (400 .. 499), \"4XX\",\n \"5XX\")\n| summarize count() by HTTPStatus, bin(TimeGenerated, 5m)\n| render areachart with (xtitle = \"time\", ytitle= \"count\")\n", - "SpecificChart": "StackedArea", - "PartTitle": "Response Codes (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "count_", - "type": "long" - } - ], - "splitBy": [ - { - "name": "HTTPStatus", - "type": "string" - } - ], - "aggregation": "Sum" - } - } - } - } - }, - "68": { - "position": { - "x": 12, - "y": 88, - "colSpan": 6, - "rowSpan": 4 - }, - "metadata": { - "inputs": [ - { - "name": "resourceTypeMode", - "isOptional": true - }, - { - "name": "ComponentId", - "isOptional": true - }, - { - "name": "Scope", - "value": { - "resourceIds": [ - "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - ] - }, - "isOptional": true - }, - { - "name": "PartId", - "isOptional": true - }, - { - "name": "Version", - "value": "2.0", - "isOptional": true - }, - { - "name": "TimeRange", - "value": "PT4H", - "isOptional": true - }, - { - "name": "DashboardId", - "isOptional": true - }, - { - "name": "DraftRequestParameters", - "value": { - "scope": "hierarchy" - }, - "isOptional": true - }, - { - "name": "Query", - "value": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "isOptional": true - }, - { - "name": "ControlType", - "value": "FrameControlChart", - "isOptional": true - }, - { - "name": "SpecificChart", - "value": "StackedColumn", - "isOptional": true - }, - { - "name": "PartTitle", - "value": "Percentile Response Time (5m)", - "isOptional": true - }, - { - "name": "PartSubTitle", - "value": "/api/v1/user-data-processing/{choice}", - "isOptional": true - }, - { - "name": "Dimensions", - "value": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - }, - "isOptional": true - }, - { - "name": "LegendOptions", - "value": { - "isEnabled": true, - "position": "Bottom" - }, - "isOptional": true - }, - { - "name": "IsQueryContainTimeRange", - "value": false, - "isOptional": true - } - ], - "type": "Extension/Microsoft_OperationsManagementSuite_Workspace/PartType/LogsDashboardPart", - "settings": { - "content": { - "Query": "\nlet api_hosts = datatable (name: string) [\"app-backend.io.italia.it\", \"api-app.io.pagopa.it\"];\nlet threshold = 1;\nAzureDiagnostics\n| where originalHost_s in (api_hosts)\n| where requestUri_s matches regex \"/api/v1/user-data-processing/[^/]+\"\n| summarize\n watermark=threshold,\n percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m)\n\n| render timechart with (xtitle = \"time\", ytitle= \"response time(s)\")\n\n", - "SpecificChart": "Line", - "PartTitle": "Percentile Response Time (5m)", - "Dimensions": { - "xAxis": { - "name": "TimeGenerated", - "type": "datetime" - }, - "yAxis": [ - { - "name": "watermark", - "type": "long" - }, - { - "name": "percentile_timeTaken_d_95", - "type": "real" - } - ], - "splitBy": [], - "aggregation": "Sum" - } - } - } - } - } - } - } - }, - "metadata": { - "model": { - "timeRange": { - "value": { - "relative": { - "duration": 24, - "timeUnit": 1 - } - }, - "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange" - }, - "filterLocale": { - "value": "en-us" - }, - "filters": { - "value": { - "MsPortalFx_TimeRange": { - "model": { - "format": "local", - "granularity": "auto", - "relative": "48h" - }, - "displayCache": { - "name": "Local Time", - "value": "Past 48 hours" - }, - "filteredPartIds": [ - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ed", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432ef", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f1", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f3", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f5", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f7", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432f9", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fb", - "StartboardPart-LogsDashboardPart-9badbd78-7607-4131-8fa1-8b85191432fd" - ] - } - } - } - } - } -} - PROPS - - tags = var.tags -} - - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_0" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/services/{service_id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/services/{service_id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/services/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_0" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/services/{service_id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/services/{service_id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/services/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_1" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/services/{service_id}/preferences")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/services/{service_id}/preferences is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/services/[^/]+/preferences" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_1" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/services/{service_id}/preferences")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/services/{service_id}/preferences is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/services/[^/]+/preferences" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_2" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/services")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/services is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/services" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_2" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/services")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/services is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/services" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_3" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/messages")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/messages is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/messages" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_3" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/messages")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/messages is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/messages" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_4" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/messages/{id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/messages/{id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/messages/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_4" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/messages/{id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/messages/{id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/messages/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_5" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/messages/{id}/message-status")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/messages/{id}/message-status is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/messages/[^/]+/message-status" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_5" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/messages/{id}/message-status")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/messages/{id}/message-status is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/messages/[^/]+/message-status" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_6" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/legal-messages/{id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/legal-messages/{id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_6" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/legal-messages/{id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/legal-messages/{id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_7" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/legal-messages/{id}/attachments/{attachment_id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/legal-messages/{id}/attachments/{attachment_id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+/attachments/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_7" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/legal-messages/{id}/attachments/{attachment_id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/legal-messages/{id}/attachments/{attachment_id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/legal-messages/[^/]+/attachments/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_8" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/third-party-messages/{id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/third-party-messages/{id} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_8" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/third-party-messages/{id}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/third-party-messages/{id} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_9" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/third-party-messages/{id}/attachments/{attachment_url}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/third-party-messages/{id}/attachments/{attachment_url} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+/attachments/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_9" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/third-party-messages/{id}/attachments/{attachment_url}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/third-party-messages/{id}/attachments/{attachment_url} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/third-party-messages/[^/]+/attachments/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_10" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/profile")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/profile is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/profile" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_10" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/profile")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/profile is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/profile" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_11" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/api-profile")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/api-profile is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/api-profile" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_11" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/api-profile")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/api-profile is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/api-profile" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_12" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/email-validation-process")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/email-validation-process is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/email-validation-process" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_12" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/email-validation-process")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/email-validation-process is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/email-validation-process" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_13" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/user-metadata")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/user-metadata is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/user-metadata" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_13" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/user-metadata")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/user-metadata is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/user-metadata" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_14" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/installations/{installationID}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/installations/{installationID} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/installations/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_14" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/installations/{installationID}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/installations/{installationID} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/installations/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_15" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/session")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/session is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/session" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_15" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/session")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/session is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/session" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_16" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/sessions")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/sessions is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/sessions" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_16" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/sessions")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/sessions is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/sessions" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_17" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/token/support")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/token/support is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/token/support" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_17" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/token/support")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/token/support is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/token/support" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_18" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/payment-requests/{rptId}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/payment-requests/{rptId} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/payment-requests/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_18" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/payment-requests/{rptId}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/payment-requests/{rptId} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/payment-requests/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_19" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/payment-activations")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/payment-activations is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/payment-activations" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_19" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/payment-activations")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/payment-activations is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/payment-activations" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_20" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/payment-activations/{codiceContestoPagamento}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/payment-activations/{codiceContestoPagamento} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/payment-activations/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_20" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/payment-activations/{codiceContestoPagamento}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/payment-activations/{codiceContestoPagamento} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/payment-activations/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_21" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/user-data-processing")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/user-data-processing is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/user-data-processing" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_21" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/user-data-processing")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/user-data-processing is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/user-data-processing" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_availability_22" { - name = replace(join("_",split("/", "${local.name}-availability @ /api/v1/user-data-processing/{choice}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Availability for /api/v1/user-data-processing/{choice} is less than or equal to 99% - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 0.99; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/user-data-processing/[^/]+" -| summarize - Total=count(), - Success=count(httpStatus_d < 500) by bin(TimeGenerated, 5m) -| extend availability=toreal(Success) / Total - -| where availability < threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - -resource "azurerm_monitor_scheduled_query_rules_alert" "alarm_time_22" { - name = replace(join("_",split("/", "${local.name}-responsetime @ /api/v1/user-data-processing/{choice}")), "/\\{|\\}/", "") - resource_group_name = data.azurerm_resource_group.this.name - location = data.azurerm_resource_group.this.location - - action { - action_group = ["/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA", "/subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA"] - } - - data_source_id = "/subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway" - description = "Response time for /api/v1/user-data-processing/{choice} is less than or equal to 1s - ${local.dashboard_base_addr}${azurerm_portal_dashboard.this.id}" - enabled = true - auto_mitigation_enabled = false - - query = <<-QUERY - -let api_hosts = datatable (name: string) ["app-backend.io.italia.it", "api-app.io.pagopa.it"]; -let threshold = 1; -AzureDiagnostics -| where originalHost_s in (api_hosts) -| where requestUri_s matches regex "/api/v1/user-data-processing/[^/]+" -| summarize - watermark=threshold, - percentiles(timeTaken_d, 95) by bin(TimeGenerated, 5m) - -| where percentile_timeTaken_d_95 > threshold - - - QUERY - - severity = 1 - frequency = 10 - time_window = 20 - trigger { - operator = "GreaterThanOrEqual" - threshold = 1 - } - - tags = var.tags -} - diff --git a/_old_azure-dashboard/api_backend/99_main.tf b/_old_azure-dashboard/api_backend/99_main.tf deleted file mode 100644 index 74ddef976..000000000 --- a/_old_azure-dashboard/api_backend/99_main.tf +++ /dev/null @@ -1,16 +0,0 @@ -terraform { - required_version = ">=1.1.5" - - required_providers { - azurerm = { - source = "hashicorp/azurerm" - version = ">=3.0.0" - } - } - - backend "azurerm" {} -} - -provider "azurerm" { - features {} -} diff --git a/_old_azure-dashboard/api_backend/99_variables.tf b/_old_azure-dashboard/api_backend/99_variables.tf deleted file mode 100644 index 3f54e101d..000000000 --- a/_old_azure-dashboard/api_backend/99_variables.tf +++ /dev/null @@ -1,26 +0,0 @@ -variable "prefix" { - type = string - validation { - condition = ( - length(var.prefix) <= 6 - ) - error_message = "Max length is 6 chars." - } -} - -variable "env_short" { - type = string - validation { - condition = ( - length(var.env_short) <= 1 - ) - error_message = "Max length is 1 chars." - } -} - -variable "tags" { - type = map(any) - default = { - CreatedBy = "Terraform" - } -} diff --git a/_old_azure-dashboard/api_backend/env/prod/backend.ini b/_old_azure-dashboard/api_backend/env/prod/backend.ini deleted file mode 100644 index cf83055f5..000000000 --- a/_old_azure-dashboard/api_backend/env/prod/backend.ini +++ /dev/null @@ -1 +0,0 @@ -subscription=PROD-IO diff --git a/_old_azure-dashboard/api_backend/env/prod/backend.tfvars b/_old_azure-dashboard/api_backend/env/prod/backend.tfvars deleted file mode 100644 index de73692f8..000000000 --- a/_old_azure-dashboard/api_backend/env/prod/backend.tfvars +++ /dev/null @@ -1,4 +0,0 @@ -resource_group_name = "terraform-state-rg" -storage_account_name = "tfappprodio" -container_name = "terraform-state" -key = "opex.io-backend.api_backend.tfstate" diff --git a/_old_azure-dashboard/api_backend/env/prod/terraform.tfvars b/_old_azure-dashboard/api_backend/env/prod/terraform.tfvars deleted file mode 100644 index 1ac0be8f7..000000000 --- a/_old_azure-dashboard/api_backend/env/prod/terraform.tfvars +++ /dev/null @@ -1,10 +0,0 @@ -prefix = "io" -env_short = "p" - -tags = { - CreatedBy = "Terraform" - Environment = "Prod" - Owner = "io" - Source = "https://github.com/pagopa/io-backend" - CostCenter = "TS310 - PAGAMENTI & SERVIZI" -} diff --git a/_old_azure-dashboard/api_backend/terraform.sh b/_old_azure-dashboard/api_backend/terraform.sh deleted file mode 100755 index e741886e8..000000000 --- a/_old_azure-dashboard/api_backend/terraform.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -set -e - -ACTION=$1 -ENV=$2 -shift 2 -other="$@" -# must be subscription in lower case -subscription="" -BACKEND_CONFIG_PATH="./env/${ENV}/backend.tfvars" - -if [ -z "$ACTION" ]; then - echo "[ERROR] Missed ACTION: init, apply, plan" - exit 0 -fi - -if [ -z "$ENV" ]; then - echo "[ERROR] ENV should be: dev, uat or prod." - exit 0 -fi - -# -# 🏁 Source & init shell -# - -# shellcheck source=/dev/null -source "./env/$ENV/backend.ini" - -# Subscription set -az account set -s "${subscription}" - -# if using cygwin, we have to transcode the WORKDIR -if [[ $WORKDIR == /cygdrive/* ]]; then - WORKDIR=$(cygpath -w $WORKDIR) -fi - -# Helm -export HELM_DEBUG=1 - -# -# 🌎 Terraform -# -if echo "init plan apply refresh import output state taint destroy" | grep -w "$ACTION" > /dev/null; then - if [ "$ACTION" = "init" ]; then - echo "[INFO] init tf on ENV: ${ENV}" - terraform "$ACTION" -backend-config="${BACKEND_CONFIG_PATH}" $other - elif [ "$ACTION" = "output" ] || [ "$ACTION" = "state" ] || [ "$ACTION" = "taint" ]; then - # init terraform backend - terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" - terraform "$ACTION" $other - else - # init terraform backend - echo "[INFO] init tf on ENV: ${ENV}" - terraform init -reconfigure -backend-config="${BACKEND_CONFIG_PATH}" - - echo "[INFO] run tf with: ${ACTION} on ENV: ${ENV} and other: >${other}<" - terraform "${ACTION}" -var-file="./env/${ENV}/terraform.tfvars" -compact-warnings $other - fi -else - echo "[ERROR] ACTION not allowed." - exit 1 -fi From e63da85e13ba63d608c4b3183987ed988c8e6f05 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:33:11 +0100 Subject: [PATCH 16/73] add api_auth --- .github/workflows/opex_api_auth.yml | 89 ++++++++++++++++++++++++ .opex/api_auth/env/prod/backend.ini | 1 + .opex/api_auth/env/prod/backend.tfvars | 4 ++ .opex/api_auth/env/prod/config.yaml | 12 ++++ .opex/api_auth/env/prod/terraform.tfvars | 10 +++ 5 files changed, 116 insertions(+) create mode 100644 .github/workflows/opex_api_auth.yml create mode 100644 .opex/api_auth/env/prod/backend.ini create mode 100644 .opex/api_auth/env/prod/backend.tfvars create mode 100644 .opex/api_auth/env/prod/config.yaml create mode 100644 .opex/api_auth/env/prod/terraform.tfvars diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml new file mode 100644 index 000000000..74e8b0e63 --- /dev/null +++ b/.github/workflows/opex_api_auth.yml @@ -0,0 +1,89 @@ +name: Opex Dashboard api_auth + +# Controls when the workflow will run +on: + push: + branches: + # - master + - opex-demo + paths: + - '.github/workflows/opex_api_auth.yml' + - '.opex/api_auth/**' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +env: + TEMPLATE_DIR: azure-dashboard + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_auth + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + - name: Read terraform version + id: read-version + shell: bash + run: | + echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV + + - name: Setup Terraform + # from https://github.com/hashicorp/setup-terraform/commits/main + uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 + with: + terraform_version: ${{ env.TERRAFORM_VERSION }} + + - name: Login + id: login + # from https://github.com/Azure/login/commits/master + uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + with: + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + + # this action create a folder named /azure-dashboard + - uses: pagopa/opex-dashboard-action@main + with: + template: ${{ env.TEMPLATE_DIR }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + + # we need to set env variables in the folder /azure-dashboard + - name: Copy Environments + run: | + cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} + + # now is possible to launch the command: terraform apply + - name: Terraform Apply + shell: bash + run: | + cd ./${TEMPLATE_DIR} + export ARM_CLIENT_ID="${CLIENT_ID}" + export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) + export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) + export ARM_USE_OIDC=true + + bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve diff --git a/.opex/api_auth/env/prod/backend.ini b/.opex/api_auth/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_auth/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_auth/env/prod/backend.tfvars b/.opex/api_auth/env/prod/backend.tfvars new file mode 100644 index 000000000..0458ac01a --- /dev/null +++ b/.opex/api_auth/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_auth.tfstate" diff --git a/.opex/api_auth/env/prod/config.yaml b/.opex/api_auth/env/prod/config.yaml new file mode 100644 index 000000000..02ae10a2c --- /dev/null +++ b/.opex/api_auth/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_auth.yaml +name: opex_api_auth +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_auth/env/prod/terraform.tfvars b/.opex/api_auth/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_auth/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} From 061507d1347121907813b4415434ba56ce7cd17c Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:40:29 +0100 Subject: [PATCH 17/73] add api_cgn --- .github/workflows/opex_api_cgn.yml | 89 +++++++++++++++++++++++++ .opex/api_cgn/env/prod/backend.ini | 1 + .opex/api_cgn/env/prod/backend.tfvars | 4 ++ .opex/api_cgn/env/prod/config.yaml | 12 ++++ .opex/api_cgn/env/prod/terraform.tfvars | 10 +++ 5 files changed, 116 insertions(+) create mode 100644 .github/workflows/opex_api_cgn.yml create mode 100644 .opex/api_cgn/env/prod/backend.ini create mode 100644 .opex/api_cgn/env/prod/backend.tfvars create mode 100644 .opex/api_cgn/env/prod/config.yaml create mode 100644 .opex/api_cgn/env/prod/terraform.tfvars diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml new file mode 100644 index 000000000..1d4885cea --- /dev/null +++ b/.github/workflows/opex_api_cgn.yml @@ -0,0 +1,89 @@ +name: Opex Dashboard api_cgn + +# Controls when the workflow will run +on: + push: + branches: + # - master + - opex-demo + paths: + - '.github/workflows/opex_api_cgn.yml' + - '.opex/api_cgn/**' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +env: + TEMPLATE_DIR: azure-dashboard + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_cgn + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + - name: Read terraform version + id: read-version + shell: bash + run: | + echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV + + - name: Setup Terraform + # from https://github.com/hashicorp/setup-terraform/commits/main + uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 + with: + terraform_version: ${{ env.TERRAFORM_VERSION }} + + - name: Login + id: login + # from https://github.com/Azure/login/commits/master + uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + with: + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + + # this action create a folder named /azure-dashboard + - uses: pagopa/opex-dashboard-action@main + with: + template: ${{ env.TEMPLATE_DIR }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + + # we need to set env variables in the folder /azure-dashboard + - name: Copy Environments + run: | + cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} + + # now is possible to launch the command: terraform apply + - name: Terraform Apply + shell: bash + run: | + cd ./${TEMPLATE_DIR} + export ARM_CLIENT_ID="${CLIENT_ID}" + export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) + export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) + export ARM_USE_OIDC=true + + bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve diff --git a/.opex/api_cgn/env/prod/backend.ini b/.opex/api_cgn/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_cgn/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_cgn/env/prod/backend.tfvars b/.opex/api_cgn/env/prod/backend.tfvars new file mode 100644 index 000000000..e12b7a20d --- /dev/null +++ b/.opex/api_cgn/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_cgn.tfstate" diff --git a/.opex/api_cgn/env/prod/config.yaml b/.opex/api_cgn/env/prod/config.yaml new file mode 100644 index 000000000..59ce809d0 --- /dev/null +++ b/.opex/api_cgn/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_cgn.yaml +name: opex_api_cgn +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_cgn/env/prod/terraform.tfvars b/.opex/api_cgn/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_cgn/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} From 663bfc33f32138bb339cdf2e0f78d314ac944afa Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:42:13 +0100 Subject: [PATCH 18/73] try fix basePath --- .opex/api_cgn/env/prod/config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.opex/api_cgn/env/prod/config.yaml b/.opex/api_cgn/env/prod/config.yaml index 59ce809d0..c4bdbfd55 100644 --- a/.opex/api_cgn/env/prod/config.yaml +++ b/.opex/api_cgn/env/prod/config.yaml @@ -7,6 +7,7 @@ action_groups: - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA overrides: + basePath: "" hosts: - app-backend.io.italia.it - api-app.io.pagopa.it From 2f4a221f2b62a66c6dcddac268e7a4f861240139 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:44:55 +0100 Subject: [PATCH 19/73] fix paths --- .github/workflows/opex_api_auth.yml | 4 +--- .github/workflows/opex_api_backend.yml | 4 +--- .github/workflows/opex_api_cgn.yml | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 74e8b0e63..4d729e78e 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -7,12 +7,10 @@ on: # - master - opex-demo paths: + - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' - '.opex/api_auth/**' - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - env: TEMPLATE_DIR: azure-dashboard CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index ae3a4328f..c7a08527d 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -7,12 +7,10 @@ on: # - master - opex-demo paths: + - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' - '.opex/api_backend/**' - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - env: TEMPLATE_DIR: azure-dashboard CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 1d4885cea..c1f4118dd 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -7,12 +7,10 @@ on: # - master - opex-demo paths: + - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' - '.opex/api_cgn/**' - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - env: TEMPLATE_DIR: azure-dashboard CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 From a7d6ab136c78d705fb324338d151ef8f70573e04 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:47:13 +0100 Subject: [PATCH 20/73] remove base path --- .opex/api_cgn/env/prod/config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.opex/api_cgn/env/prod/config.yaml b/.opex/api_cgn/env/prod/config.yaml index c4bdbfd55..59ce809d0 100644 --- a/.opex/api_cgn/env/prod/config.yaml +++ b/.opex/api_cgn/env/prod/config.yaml @@ -7,7 +7,6 @@ action_groups: - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA overrides: - basePath: "" hosts: - app-backend.io.italia.it - api-app.io.pagopa.it From 0e7009ec73f257f9abf925d365cb3e450a31bb79 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 13:55:36 +0100 Subject: [PATCH 21/73] fix --- .github/workflows/opex_api_auth.yml | 3 +-- .github/workflows/opex_api_backend.yml | 3 +-- .github/workflows/opex_api_cgn.yml | 3 +-- .identity/02_application_master.tf | 2 +- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 4d729e78e..6d49e8c72 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -4,8 +4,7 @@ name: Opex Dashboard api_auth on: push: branches: - # - master - - opex-demo + - master paths: - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index c7a08527d..5edb95f8c 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -4,8 +4,7 @@ name: Opex Dashboard api_backend on: push: branches: - # - master - - opex-demo + - master paths: - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index c1f4118dd..5826c72b8 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -4,8 +4,7 @@ name: Opex Dashboard api_cgn on: push: branches: - # - master - - opex-demo + - master paths: - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index 006f98d97..7da2ab66f 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,7 +12,7 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" } output "azure_master_client_id" { From 61913408fb23e8edb6a76adb3daa291e289676dd Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 15:43:13 +0100 Subject: [PATCH 22/73] add gitignore --- .gitignore | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f0fcf3015..e9bd63832 100644 --- a/.gitignore +++ b/.gitignore @@ -42,7 +42,7 @@ dist local.* # Exclude .npmrc file -.npmrc +.npmrc # Exclude Codetour plugin folder .tours @@ -51,4 +51,30 @@ local.* .eslintcache # Exclude swagger codegen (needed to generate PN specs) -swagger-codegen-cli-*.jar \ No newline at end of file +swagger-codegen-cli-*.jar + +##### Terraform + +# Local .terraform directories +**/.terraform/* + +# .tfstate files +*.tfstate +*.tfstate.* +*.tfsec + +# Crash log files +crash.log + +# Ignore any .tfvars files that are generated automatically for each Terraform run. Most +# .tfvars files are managed as part of configuration and so should be included in +# version control. +# +# example.tfvars + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json From 9d5c2df6b86f8e8ed842dbabfcd88119b5ce4a88 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 22:46:41 +0100 Subject: [PATCH 23/73] remove files --- .../hashicorp/azuread/2.30.0/darwin_amd64 | 1 - .../hashicorp/azurerm/3.33.0/darwin_amd64 | 1 - .identity/.terraform/terraform.tfstate | 45 ------------------- 3 files changed, 47 deletions(-) delete mode 120000 .identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 delete mode 120000 .identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 delete mode 100644 .identity/.terraform/terraform.tfstate diff --git a/.identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 b/.identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 deleted file mode 120000 index 8df6990df..000000000 --- a/.identity/.terraform/providers/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 +++ /dev/null @@ -1 +0,0 @@ -/Users/pasqualedevita/.terraform.d/plugin-cache/registry.terraform.io/hashicorp/azuread/2.30.0/darwin_amd64 \ No newline at end of file diff --git a/.identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 b/.identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 deleted file mode 120000 index 31cc35959..000000000 --- a/.identity/.terraform/providers/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 +++ /dev/null @@ -1 +0,0 @@ -/Users/pasqualedevita/.terraform.d/plugin-cache/registry.terraform.io/hashicorp/azurerm/3.33.0/darwin_amd64 \ No newline at end of file diff --git a/.identity/.terraform/terraform.tfstate b/.identity/.terraform/terraform.tfstate deleted file mode 100644 index 1a3e485be..000000000 --- a/.identity/.terraform/terraform.tfstate +++ /dev/null @@ -1,45 +0,0 @@ -{ - "version": 3, - "serial": 1, - "lineage": "17eba399-fdf3-e990-5e10-51bf9cb5d944", - "backend": { - "type": "azurerm", - "config": { - "access_key": null, - "client_certificate_password": null, - "client_certificate_path": null, - "client_id": null, - "client_secret": null, - "container_name": "terraform-state", - "endpoint": null, - "environment": null, - "key": "io-backend.tfstate", - "metadata_host": null, - "msi_endpoint": null, - "oidc_request_token": null, - "oidc_request_url": null, - "oidc_token": null, - "oidc_token_file_path": null, - "resource_group_name": "terraform-state-rg", - "sas_token": null, - "snapshot": null, - "storage_account_name": "tfappprodio", - "subscription_id": null, - "tenant_id": null, - "use_azuread_auth": null, - "use_msi": null, - "use_oidc": null - }, - "hash": 3206449086 - }, - "modules": [ - { - "path": [ - "root" - ], - "outputs": {}, - "resources": {}, - "depends_on": [] - } - ] -} From fb978e5eb4c3f8ffa57597529f89099d1022417f Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 21 Dec 2022 22:49:55 +0100 Subject: [PATCH 24/73] use latest terraform version --- .terraform-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.terraform-version b/.terraform-version index d0149fef7..95b25aee2 100644 --- a/.terraform-version +++ b/.terraform-version @@ -1 +1 @@ -1.3.4 +1.3.6 From 45905f17e2965b86114c1eeeb8efbb5c1481b5b9 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 23 Dec 2022 15:49:57 +0100 Subject: [PATCH 25/73] try compact gh action --- .github/workflows/opex_api_auth.yml | 48 +++----------- .github/workflows/opex_api_auth.yml.old | 86 +++++++++++++++++++++++++ .identity/02_application_master.tf | 2 +- 3 files changed, 95 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/opex_api_auth.yml.old diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 6d49e8c72..fe106076f 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -5,13 +5,13 @@ on: push: branches: - master + - opex-demo paths: - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' - '.opex/api_auth/**' env: - TEMPLATE_DIR: azure-dashboard CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b @@ -41,46 +41,14 @@ jobs: persist-credentials: false fetch-depth: 0 - - name: Read terraform version - id: read-version - shell: bash - run: | - echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV - - - name: Setup Terraform - # from https://github.com/hashicorp/setup-terraform/commits/main - uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 - with: - terraform_version: ${{ env.TERRAFORM_VERSION }} - - - name: Login - id: login - # from https://github.com/Azure/login/commits/master - uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + # this action create a folder named /azure-dashboard + - uses: pagopa/pex-dashboard-azure-action@v1.0.1 with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml client-id: ${{ env.CLIENT_ID }} tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} - - # this action create a folder named /azure-dashboard - - uses: pagopa/opex-dashboard-action@main - with: - template: ${{ env.TEMPLATE_DIR }} - config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml - - # we need to set env variables in the folder /azure-dashboard - - name: Copy Environments - run: | - cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} - - # now is possible to launch the command: terraform apply - - name: Terraform Apply - shell: bash - run: | - cd ./${TEMPLATE_DIR} - export ARM_CLIENT_ID="${CLIENT_ID}" - export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) - export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) - export ARM_USE_OIDC=true - - bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:490f804e0114dbbf5df491e8b201e4705848e93dee313f376a0412536088af52 diff --git a/.github/workflows/opex_api_auth.yml.old b/.github/workflows/opex_api_auth.yml.old new file mode 100644 index 000000000..6d49e8c72 --- /dev/null +++ b/.github/workflows/opex_api_auth.yml.old @@ -0,0 +1,86 @@ +name: Opex Dashboard api_auth + +# Controls when the workflow will run +on: + push: + branches: + - master + paths: + - 'api_auth.yaml' + - '.github/workflows/opex_api_auth.yml' + - '.opex/api_auth/**' + +env: + TEMPLATE_DIR: azure-dashboard + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_auth + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + - name: Read terraform version + id: read-version + shell: bash + run: | + echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV + + - name: Setup Terraform + # from https://github.com/hashicorp/setup-terraform/commits/main + uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 + with: + terraform_version: ${{ env.TERRAFORM_VERSION }} + + - name: Login + id: login + # from https://github.com/Azure/login/commits/master + uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + with: + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + + # this action create a folder named /azure-dashboard + - uses: pagopa/opex-dashboard-action@main + with: + template: ${{ env.TEMPLATE_DIR }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + + # we need to set env variables in the folder /azure-dashboard + - name: Copy Environments + run: | + cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} + + # now is possible to launch the command: terraform apply + - name: Terraform Apply + shell: bash + run: | + cd ./${TEMPLATE_DIR} + export ARM_CLIENT_ID="${CLIENT_ID}" + export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) + export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) + export ARM_USE_OIDC=true + + bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index 7da2ab66f..006f98d97 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,7 +12,7 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" } output "azure_master_client_id" { From c24f17f92b3afc540fb30182315be35176493dd8 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 23 Dec 2022 15:50:57 +0100 Subject: [PATCH 26/73] fix repo --- .github/workflows/opex_api_auth.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index fe106076f..71d72db83 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -42,7 +42,7 @@ jobs: fetch-depth: 0 # this action create a folder named /azure-dashboard - - uses: pagopa/pex-dashboard-azure-action@v1.0.1 + - uses: pagopa/opex-dashboard-azure-action@v1.0.1 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} From 0b4272486dcb5acb626d4879c097fecbf396bf2c Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 23 Dec 2022 17:01:03 +0100 Subject: [PATCH 27/73] test --- .github/workflows/opex_api_auth.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 71d72db83..23f5138ac 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -42,7 +42,7 @@ jobs: fetch-depth: 0 # this action create a folder named /azure-dashboard - - uses: pagopa/opex-dashboard-azure-action@v1.0.1 + - uses: pagopa/opex-dashboard-azure-action@test with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} From 134fd8018a22dd7faa8e88ca60158916bc10d8f0 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 23 Dec 2022 17:20:11 +0100 Subject: [PATCH 28/73] fix --- .github/workflows/opex_api_auth.yml | 4 +- .github/workflows/opex_api_auth.yml.old | 86 ------------------- .github/workflows/opex_api_backend.yml | 48 ++--------- .github/workflows/opex_api_cgn.yml | 48 ++--------- .gitignore | 28 +----- .identity/.gitignore | 23 +++++ .../.terraform-version | 0 7 files changed, 42 insertions(+), 195 deletions(-) delete mode 100644 .github/workflows/opex_api_auth.yml.old create mode 100644 .identity/.gitignore rename .terraform-version => .identity/.terraform-version (100%) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 23f5138ac..7aa82df88 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -41,8 +41,8 @@ jobs: persist-credentials: false fetch-depth: 0 - # this action create a folder named /azure-dashboard - - uses: pagopa/opex-dashboard-azure-action@test + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} diff --git a/.github/workflows/opex_api_auth.yml.old b/.github/workflows/opex_api_auth.yml.old deleted file mode 100644 index 6d49e8c72..000000000 --- a/.github/workflows/opex_api_auth.yml.old +++ /dev/null @@ -1,86 +0,0 @@ -name: Opex Dashboard api_auth - -# Controls when the workflow will run -on: - push: - branches: - - master - paths: - - 'api_auth.yaml' - - '.github/workflows/opex_api_auth.yml' - - '.opex/api_auth/**' - -env: - TEMPLATE_DIR: azure-dashboard - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 - TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d - SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b - API_NAME: api_auth - -permissions: - id-token: write - contents: read - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - build: - # The type of runner that the job will run on - runs-on: ubuntu-22.04 - - strategy: - matrix: - environment: [prod] - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - - name: Checkout - id: checkout - # from https://github.com/actions/checkout/commits/main - uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 - with: - persist-credentials: false - fetch-depth: 0 - - - name: Read terraform version - id: read-version - shell: bash - run: | - echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV - - - name: Setup Terraform - # from https://github.com/hashicorp/setup-terraform/commits/main - uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 - with: - terraform_version: ${{ env.TERRAFORM_VERSION }} - - - name: Login - id: login - # from https://github.com/Azure/login/commits/master - uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 - with: - client-id: ${{ env.CLIENT_ID }} - tenant-id: ${{ env.TENANT_ID }} - subscription-id: ${{ env.SUBSCRIPTION_ID }} - - # this action create a folder named /azure-dashboard - - uses: pagopa/opex-dashboard-action@main - with: - template: ${{ env.TEMPLATE_DIR }} - config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml - - # we need to set env variables in the folder /azure-dashboard - - name: Copy Environments - run: | - cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} - - # now is possible to launch the command: terraform apply - - name: Terraform Apply - shell: bash - run: | - cd ./${TEMPLATE_DIR} - export ARM_CLIENT_ID="${CLIENT_ID}" - export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) - export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) - export ARM_USE_OIDC=true - - bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 5edb95f8c..180bd6e22 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -5,13 +5,13 @@ on: push: branches: - master + - opex-demo paths: - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' - '.opex/api_backend/**' env: - TEMPLATE_DIR: azure-dashboard CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b @@ -41,46 +41,14 @@ jobs: persist-credentials: false fetch-depth: 0 - - name: Read terraform version - id: read-version - shell: bash - run: | - echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV - - - name: Setup Terraform - # from https://github.com/hashicorp/setup-terraform/commits/main - uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 - with: - terraform_version: ${{ env.TERRAFORM_VERSION }} - - - name: Login - id: login - # from https://github.com/Azure/login/commits/master - uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.2 with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml client-id: ${{ env.CLIENT_ID }} tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} - - # this action create a folder named /azure-dashboard - - uses: pagopa/opex-dashboard-action@main - with: - template: ${{ env.TEMPLATE_DIR }} - config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml - - # we need to set env variables in the folder /azure-dashboard - - name: Copy Environments - run: | - cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} - - # now is possible to launch the command: terraform apply - - name: Terraform Apply - shell: bash - run: | - cd ./${TEMPLATE_DIR} - export ARM_CLIENT_ID="${CLIENT_ID}" - export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) - export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) - export ARM_USE_OIDC=true - - bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:490f804e0114dbbf5df491e8b201e4705848e93dee313f376a0412536088af52 diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 5826c72b8..21542bd48 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -5,13 +5,13 @@ on: push: branches: - master + - opex-demo paths: - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' - '.opex/api_cgn/**' env: - TEMPLATE_DIR: azure-dashboard CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b @@ -41,46 +41,14 @@ jobs: persist-credentials: false fetch-depth: 0 - - name: Read terraform version - id: read-version - shell: bash - run: | - echo "TERRAFORM_VERSION=`cat .terraform-version`" >> $GITHUB_ENV - - - name: Setup Terraform - # from https://github.com/hashicorp/setup-terraform/commits/main - uses: hashicorp/setup-terraform@8feba2b913ea459066180f9cb177f58a881cf146 - with: - terraform_version: ${{ env.TERRAFORM_VERSION }} - - - name: Login - id: login - # from https://github.com/Azure/login/commits/master - uses: azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.2 with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml client-id: ${{ env.CLIENT_ID }} tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} - - # this action create a folder named /azure-dashboard - - uses: pagopa/opex-dashboard-action@main - with: - template: ${{ env.TEMPLATE_DIR }} - config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml - - # we need to set env variables in the folder /azure-dashboard - - name: Copy Environments - run: | - cp -R .opex/${API_NAME}/env ./${TEMPLATE_DIR} - - # now is possible to launch the command: terraform apply - - name: Terraform Apply - shell: bash - run: | - cd ./${TEMPLATE_DIR} - export ARM_CLIENT_ID="${CLIENT_ID}" - export ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) - export ARM_TENANT_ID=$(az account show --query tenantId --output tsv) - export ARM_USE_OIDC=true - - bash ./terraform.sh apply ${{ matrix.environment }} -auto-approve + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:490f804e0114dbbf5df491e8b201e4705848e93dee313f376a0412536088af52 diff --git a/.gitignore b/.gitignore index e9bd63832..60c798d01 100644 --- a/.gitignore +++ b/.gitignore @@ -51,30 +51,4 @@ local.* .eslintcache # Exclude swagger codegen (needed to generate PN specs) -swagger-codegen-cli-*.jar - -##### Terraform - -# Local .terraform directories -**/.terraform/* - -# .tfstate files -*.tfstate -*.tfstate.* -*.tfsec - -# Crash log files -crash.log - -# Ignore any .tfvars files that are generated automatically for each Terraform run. Most -# .tfvars files are managed as part of configuration and so should be included in -# version control. -# -# example.tfvars - -# Ignore override files as they are usually used to override resources locally and so -# are not checked in -override.tf -override.tf.json -*_override.tf -*_override.tf.json +swagger-codegen-cli-*.jar \ No newline at end of file diff --git a/.identity/.gitignore b/.identity/.gitignore new file mode 100644 index 000000000..fdbb975d6 --- /dev/null +++ b/.identity/.gitignore @@ -0,0 +1,23 @@ +# Local .terraform directories +**/.terraform/* + +# .tfstate files +*.tfstate +*.tfstate.* +*.tfsec + +# Crash log files +crash.log + +# Ignore any .tfvars files that are generated automatically for each Terraform run. Most +# .tfvars files are managed as part of configuration and so should be included in +# version control. +# +# example.tfvars + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json diff --git a/.terraform-version b/.identity/.terraform-version similarity index 100% rename from .terraform-version rename to .identity/.terraform-version From 3b0a965cc607dc2189d63e7c8d126d35d9b66b2c Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 23 Dec 2022 17:25:11 +0100 Subject: [PATCH 29/73] remove opex-branch --- .github/workflows/opex_api_auth.yml | 3 +-- .github/workflows/opex_api_backend.yml | 3 +-- .github/workflows/opex_api_cgn.yml | 3 +-- .identity/02_application_master.tf | 2 +- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 7aa82df88..b732517e0 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -5,7 +5,6 @@ on: push: branches: - master - - opex-demo paths: - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' @@ -51,4 +50,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:490f804e0114dbbf5df491e8b201e4705848e93dee313f376a0412536088af52 + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 180bd6e22..1cb5d2f3f 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -5,7 +5,6 @@ on: push: branches: - master - - opex-demo paths: - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' @@ -51,4 +50,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:490f804e0114dbbf5df491e8b201e4705848e93dee313f376a0412536088af52 + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 21542bd48..f897151e2 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -5,7 +5,6 @@ on: push: branches: - master - - opex-demo paths: - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' @@ -51,4 +50,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:490f804e0114dbbf5df491e8b201e4705848e93dee313f376a0412536088af52 + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index 006f98d97..7da2ab66f 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,7 +12,7 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" } output "azure_master_client_id" { From a554c9d34374da63a5462a285ac2e7b0fbda5574 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 23 Dec 2022 17:33:26 +0100 Subject: [PATCH 30/73] update action --- .github/workflows/opex_api_auth.yml | 2 +- .github/workflows/opex_api_backend.yml | 2 +- .github/workflows/opex_api_cgn.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index b732517e0..03b4fadf1 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -41,7 +41,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.2 + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 1cb5d2f3f..76c31b122 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -41,7 +41,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.2 + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index f897151e2..2aaa94bb6 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -41,7 +41,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.2 + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} From 7084439cda5de49c7a1e3c880ee2a57b08e25636 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Tue, 27 Dec 2022 09:29:43 +0100 Subject: [PATCH 31/73] tuning --- .github/workflows/opex_api_auth.yml | 2 +- .github/workflows/opex_api_backend.yml | 2 +- .github/workflows/opex_api_cgn.yml | 2 +- .identity/02_application_master.tf | 2 +- .opex/api_backend/env/prod/config.yaml | 3 +++ 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 03b4fadf1..de92d1454 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_auth on: push: branches: - - master + - opex-demo paths: - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 76c31b122..fcbc096ef 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_backend on: push: branches: - - master + - opex-demo paths: - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 2aaa94bb6..5167736e7 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_cgn on: push: branches: - - master + - opex-demo paths: - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index 7da2ab66f..006f98d97 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,7 +12,7 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" } output "azure_master_client_id" { diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index f1ca5ac3c..136ca97fa 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -14,3 +14,6 @@ overrides: /api/v1/payment-requests/{rptId}: response_time_threshold: 7 availability_threshold: 0.25 + /api/v1/payment-activations: + response_time_threshold: 4 + availability_threshold: 0.95 From c1c6d6159c0fc64e71ab25adb6c9716d282f454c Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Tue, 27 Dec 2022 09:42:23 +0100 Subject: [PATCH 32/73] tuning --- .opex/api_auth/env/prod/config.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.opex/api_auth/env/prod/config.yaml b/.opex/api_auth/env/prod/config.yaml index 02ae10a2c..c14898f34 100644 --- a/.opex/api_auth/env/prod/config.yaml +++ b/.opex/api_auth/env/prod/config.yaml @@ -1,7 +1,7 @@ oa3_spec: api_auth.yaml name: opex_api_auth location: West Europe -timespan: 5m +timespan: 10m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA @@ -10,3 +10,6 @@ overrides: hosts: - app-backend.io.italia.it - api-app.io.pagopa.it + endpoints: + /logout: + availability_threshold: 0.90 From 44b702dddbfa3749cdd20f330dc7d9f3a47ed2b1 Mon Sep 17 00:00:00 2001 From: Pasquale De Vita <59291437+pasqualedevita@users.noreply.github.com> Date: Wed, 11 Jan 2023 10:20:23 +0100 Subject: [PATCH 33/73] Update .opex/api_auth/env/prod/config.yaml Co-authored-by: Greta Quadrati <75862507+gquadrati@users.noreply.github.com> --- .opex/api_auth/env/prod/config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.opex/api_auth/env/prod/config.yaml b/.opex/api_auth/env/prod/config.yaml index c14898f34..e504672d5 100644 --- a/.opex/api_auth/env/prod/config.yaml +++ b/.opex/api_auth/env/prod/config.yaml @@ -4,8 +4,7 @@ location: West Europe timespan: 10m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror overrides: hosts: - app-backend.io.italia.it From 9bb56fc89494d40209c55d5bda39981721a1eb6e Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Wed, 11 Jan 2023 10:27:15 +0100 Subject: [PATCH 34/73] change branch master --- .github/workflows/opex_api_auth.yml | 2 +- .github/workflows/opex_api_backend.yml | 2 +- .github/workflows/opex_api_cgn.yml | 2 +- .identity/02_application_master.tf | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index de92d1454..03b4fadf1 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_auth on: push: branches: - - opex-demo + - master paths: - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index fcbc096ef..76c31b122 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_backend on: push: branches: - - opex-demo + - master paths: - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 5167736e7..2aaa94bb6 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_cgn on: push: branches: - - opex-demo + - master paths: - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index 006f98d97..7da2ab66f 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,7 +12,7 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" } output "azure_master_client_id" { From c4eaa888c71664f743f2176d5d8fc4adb1fd5294 Mon Sep 17 00:00:00 2001 From: Pasquale De Vita <59291437+pasqualedevita@users.noreply.github.com> Date: Wed, 11 Jan 2023 10:28:06 +0100 Subject: [PATCH 35/73] Update .opex/api_cgn/env/prod/config.yaml Co-authored-by: Greta Quadrati <75862507+gquadrati@users.noreply.github.com> --- .opex/api_cgn/env/prod/config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.opex/api_cgn/env/prod/config.yaml b/.opex/api_cgn/env/prod/config.yaml index 59ce809d0..1783ea859 100644 --- a/.opex/api_cgn/env/prod/config.yaml +++ b/.opex/api_cgn/env/prod/config.yaml @@ -4,8 +4,7 @@ location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror overrides: hosts: - app-backend.io.italia.it From 404790a310610928a1e37dcd6d79b1f4f842e83b Mon Sep 17 00:00:00 2001 From: Pasquale De Vita <59291437+pasqualedevita@users.noreply.github.com> Date: Wed, 11 Jan 2023 10:28:15 +0100 Subject: [PATCH 36/73] Update .opex/api_backend/env/prod/config.yaml Co-authored-by: Greta Quadrati <75862507+gquadrati@users.noreply.github.com> --- .opex/api_backend/env/prod/config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index 136ca97fa..fdbb0ba24 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -4,8 +4,7 @@ location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoPA + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror overrides: hosts: - app-backend.io.italia.it From b40cd2bf77d2a9e0c86af059acd65fe614937af8 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 16:50:54 +0100 Subject: [PATCH 37/73] add other apis --- .github/workflows/opex_api_api_bonus.yml | 53 +++++++++++++++++++ .github/workflows/opex_api_api_bpd.yml | 53 +++++++++++++++++++ .github/workflows/opex_api_auth.yml | 2 +- .github/workflows/opex_api_backend.yml | 2 +- .github/workflows/opex_api_cgn.yml | 2 +- .identity/02_application_master.tf | 3 +- .opex/api_bonus/env/prod/backend.ini | 1 + .opex/api_bonus/env/prod/backend.tfvars | 4 ++ .opex/api_bonus/env/prod/config.yaml | 12 +++++ .opex/api_bonus/env/prod/terraform.tfvars | 10 ++++ .opex/api_bpd/env/prod/backend.ini | 1 + .opex/api_bpd/env/prod/backend.tfvars | 4 ++ .opex/api_bpd/env/prod/config.yaml | 12 +++++ .opex/api_bpd/env/prod/terraform.tfvars | 10 ++++ .../env/prod/backend.ini | 1 + .../env/prod/backend.tfvars | 4 ++ .../env/prod/config.yaml | 12 +++++ .../env/prod/terraform.tfvars | 10 ++++ .opex/api_eucovidcert/env/prod/backend.ini | 1 + .opex/api_eucovidcert/env/prod/backend.tfvars | 4 ++ .opex/api_eucovidcert/env/prod/config.yaml | 12 +++++ .../api_eucovidcert/env/prod/terraform.tfvars | 10 ++++ .opex/api_fims/env/prod/backend.ini | 1 + .opex/api_fims/env/prod/backend.tfvars | 4 ++ .opex/api_fims/env/prod/config.yaml | 12 +++++ .opex/api_fims/env/prod/terraform.tfvars | 10 ++++ .opex/api_mit_voucher/env/prod/backend.ini | 1 + .opex/api_mit_voucher/env/prod/backend.tfvars | 4 ++ .opex/api_mit_voucher/env/prod/config.yaml | 12 +++++ .../api_mit_voucher/env/prod/terraform.tfvars | 10 ++++ .opex/api_myportal/env/prod/backend.ini | 1 + .opex/api_myportal/env/prod/backend.tfvars | 4 ++ .opex/api_myportal/env/prod/config.yaml | 12 +++++ .opex/api_myportal/env/prod/terraform.tfvars | 10 ++++ .opex/api_notifications/env/prod/backend.ini | 1 + .../api_notifications/env/prod/backend.tfvars | 4 ++ .opex/api_notifications/env/prod/config.yaml | 12 +++++ .../env/prod/terraform.tfvars | 10 ++++ .opex/api_pagopa/env/prod/backend.ini | 1 + .opex/api_pagopa/env/prod/backend.tfvars | 4 ++ .opex/api_pagopa/env/prod/config.yaml | 12 +++++ .opex/api_pagopa/env/prod/terraform.tfvars | 10 ++++ .opex/api_parameters/env/prod/backend.ini | 1 + .opex/api_parameters/env/prod/backend.tfvars | 4 ++ .opex/api_parameters/env/prod/config.yaml | 12 +++++ .../api_parameters/env/prod/terraform.tfvars | 10 ++++ .opex/api_pn/env/prod/backend.ini | 1 + .opex/api_pn/env/prod/backend.tfvars | 4 ++ .opex/api_pn/env/prod/config.yaml | 12 +++++ .opex/api_pn/env/prod/terraform.tfvars | 10 ++++ .opex/api_public/env/prod/backend.ini | 1 + .opex/api_public/env/prod/backend.tfvars | 4 ++ .opex/api_public/env/prod/config.yaml | 12 +++++ .opex/api_public/env/prod/terraform.tfvars | 10 ++++ .opex/api_session/env/prod/backend.ini | 1 + .opex/api_session/env/prod/backend.tfvars | 4 ++ .opex/api_session/env/prod/config.yaml | 12 +++++ .opex/api_session/env/prod/terraform.tfvars | 10 ++++ .opex/api_zendesk/env/prod/backend.ini | 1 + .opex/api_zendesk/env/prod/backend.tfvars | 4 ++ .opex/api_zendesk/env/prod/config.yaml | 12 +++++ .opex/api_zendesk/env/prod/terraform.tfvars | 10 ++++ 62 files changed, 489 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/opex_api_api_bonus.yml create mode 100644 .github/workflows/opex_api_api_bpd.yml create mode 100644 .opex/api_bonus/env/prod/backend.ini create mode 100644 .opex/api_bonus/env/prod/backend.tfvars create mode 100644 .opex/api_bonus/env/prod/config.yaml create mode 100644 .opex/api_bonus/env/prod/terraform.tfvars create mode 100644 .opex/api_bpd/env/prod/backend.ini create mode 100644 .opex/api_bpd/env/prod/backend.tfvars create mode 100644 .opex/api_bpd/env/prod/config.yaml create mode 100644 .opex/api_bpd/env/prod/terraform.tfvars create mode 100644 .opex/api_cgn_operator_search/env/prod/backend.ini create mode 100644 .opex/api_cgn_operator_search/env/prod/backend.tfvars create mode 100644 .opex/api_cgn_operator_search/env/prod/config.yaml create mode 100644 .opex/api_cgn_operator_search/env/prod/terraform.tfvars create mode 100644 .opex/api_eucovidcert/env/prod/backend.ini create mode 100644 .opex/api_eucovidcert/env/prod/backend.tfvars create mode 100644 .opex/api_eucovidcert/env/prod/config.yaml create mode 100644 .opex/api_eucovidcert/env/prod/terraform.tfvars create mode 100644 .opex/api_fims/env/prod/backend.ini create mode 100644 .opex/api_fims/env/prod/backend.tfvars create mode 100644 .opex/api_fims/env/prod/config.yaml create mode 100644 .opex/api_fims/env/prod/terraform.tfvars create mode 100644 .opex/api_mit_voucher/env/prod/backend.ini create mode 100644 .opex/api_mit_voucher/env/prod/backend.tfvars create mode 100644 .opex/api_mit_voucher/env/prod/config.yaml create mode 100644 .opex/api_mit_voucher/env/prod/terraform.tfvars create mode 100644 .opex/api_myportal/env/prod/backend.ini create mode 100644 .opex/api_myportal/env/prod/backend.tfvars create mode 100644 .opex/api_myportal/env/prod/config.yaml create mode 100644 .opex/api_myportal/env/prod/terraform.tfvars create mode 100644 .opex/api_notifications/env/prod/backend.ini create mode 100644 .opex/api_notifications/env/prod/backend.tfvars create mode 100644 .opex/api_notifications/env/prod/config.yaml create mode 100644 .opex/api_notifications/env/prod/terraform.tfvars create mode 100644 .opex/api_pagopa/env/prod/backend.ini create mode 100644 .opex/api_pagopa/env/prod/backend.tfvars create mode 100644 .opex/api_pagopa/env/prod/config.yaml create mode 100644 .opex/api_pagopa/env/prod/terraform.tfvars create mode 100644 .opex/api_parameters/env/prod/backend.ini create mode 100644 .opex/api_parameters/env/prod/backend.tfvars create mode 100644 .opex/api_parameters/env/prod/config.yaml create mode 100644 .opex/api_parameters/env/prod/terraform.tfvars create mode 100644 .opex/api_pn/env/prod/backend.ini create mode 100644 .opex/api_pn/env/prod/backend.tfvars create mode 100644 .opex/api_pn/env/prod/config.yaml create mode 100644 .opex/api_pn/env/prod/terraform.tfvars create mode 100644 .opex/api_public/env/prod/backend.ini create mode 100644 .opex/api_public/env/prod/backend.tfvars create mode 100644 .opex/api_public/env/prod/config.yaml create mode 100644 .opex/api_public/env/prod/terraform.tfvars create mode 100644 .opex/api_session/env/prod/backend.ini create mode 100644 .opex/api_session/env/prod/backend.tfvars create mode 100644 .opex/api_session/env/prod/config.yaml create mode 100644 .opex/api_session/env/prod/terraform.tfvars create mode 100644 .opex/api_zendesk/env/prod/backend.ini create mode 100644 .opex/api_zendesk/env/prod/backend.tfvars create mode 100644 .opex/api_zendesk/env/prod/config.yaml create mode 100644 .opex/api_zendesk/env/prod/terraform.tfvars diff --git a/.github/workflows/opex_api_api_bonus.yml b/.github/workflows/opex_api_api_bonus.yml new file mode 100644 index 000000000..7fb60f109 --- /dev/null +++ b/.github/workflows/opex_api_api_bonus.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_bonus + +# Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_bonus.yaml' + - '.github/workflows/opex_api_bonus.yml' + - '.opex/api_bonus/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_bonus + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_api_bpd.yml b/.github/workflows/opex_api_api_bpd.yml new file mode 100644 index 000000000..81f52274e --- /dev/null +++ b/.github/workflows/opex_api_api_bpd.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_bpd + +# Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_bpd.yaml' + - '.github/workflows/opex_api_bpd.yml' + - '.opex/api_bpd/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_bpd + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 03b4fadf1..de92d1454 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_auth on: push: branches: - - master + - opex-demo paths: - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 76c31b122..fcbc096ef 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_backend on: push: branches: - - master + - opex-demo paths: - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 2aaa94bb6..5167736e7 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -4,7 +4,7 @@ name: Opex Dashboard api_cgn on: push: branches: - - master + - opex-demo paths: - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index 7da2ab66f..c02654b39 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,7 +12,8 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" + # subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" } output "azure_master_client_id" { diff --git a/.opex/api_bonus/env/prod/backend.ini b/.opex/api_bonus/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_bonus/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_bonus/env/prod/backend.tfvars b/.opex/api_bonus/env/prod/backend.tfvars new file mode 100644 index 000000000..cfb3874cb --- /dev/null +++ b/.opex/api_bonus/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_bonus.tfstate" diff --git a/.opex/api_bonus/env/prod/config.yaml b/.opex/api_bonus/env/prod/config.yaml new file mode 100644 index 000000000..66f87a686 --- /dev/null +++ b/.opex/api_bonus/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_bonus.yaml +name: opex_iobackend_api_bonus +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_bonus/env/prod/terraform.tfvars b/.opex/api_bonus/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_bonus/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_bpd/env/prod/backend.ini b/.opex/api_bpd/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_bpd/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_bpd/env/prod/backend.tfvars b/.opex/api_bpd/env/prod/backend.tfvars new file mode 100644 index 000000000..8133cbc7b --- /dev/null +++ b/.opex/api_bpd/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_bpd.tfstate" diff --git a/.opex/api_bpd/env/prod/config.yaml b/.opex/api_bpd/env/prod/config.yaml new file mode 100644 index 000000000..d8b766736 --- /dev/null +++ b/.opex/api_bpd/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_bpd.yaml +name: opex_iobackend_api_bpd +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_bpd/env/prod/terraform.tfvars b/.opex/api_bpd/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_bpd/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_cgn_operator_search/env/prod/backend.ini b/.opex/api_cgn_operator_search/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_cgn_operator_search/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_cgn_operator_search/env/prod/backend.tfvars b/.opex/api_cgn_operator_search/env/prod/backend.tfvars new file mode 100644 index 000000000..bcdb2324f --- /dev/null +++ b/.opex/api_cgn_operator_search/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_cgn_operator_search.tfstate" diff --git a/.opex/api_cgn_operator_search/env/prod/config.yaml b/.opex/api_cgn_operator_search/env/prod/config.yaml new file mode 100644 index 000000000..08ee94ea1 --- /dev/null +++ b/.opex/api_cgn_operator_search/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_cgn_operator_search.yaml +name: opex_iobackend_api_cgn_operator_search +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_cgn_operator_search/env/prod/terraform.tfvars b/.opex/api_cgn_operator_search/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_cgn_operator_search/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_eucovidcert/env/prod/backend.ini b/.opex/api_eucovidcert/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_eucovidcert/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_eucovidcert/env/prod/backend.tfvars b/.opex/api_eucovidcert/env/prod/backend.tfvars new file mode 100644 index 000000000..6f5685481 --- /dev/null +++ b/.opex/api_eucovidcert/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_eucovidcert.tfstate" diff --git a/.opex/api_eucovidcert/env/prod/config.yaml b/.opex/api_eucovidcert/env/prod/config.yaml new file mode 100644 index 000000000..92d39f001 --- /dev/null +++ b/.opex/api_eucovidcert/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_eucovidcert.yaml +name: opex_iobackend_api_eucovidcert +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_eucovidcert/env/prod/terraform.tfvars b/.opex/api_eucovidcert/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_eucovidcert/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_fims/env/prod/backend.ini b/.opex/api_fims/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_fims/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_fims/env/prod/backend.tfvars b/.opex/api_fims/env/prod/backend.tfvars new file mode 100644 index 000000000..d6f99b73e --- /dev/null +++ b/.opex/api_fims/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_fims.tfstate" diff --git a/.opex/api_fims/env/prod/config.yaml b/.opex/api_fims/env/prod/config.yaml new file mode 100644 index 000000000..1c861e1b4 --- /dev/null +++ b/.opex/api_fims/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_fims.yaml +name: opex_iobackend_api_fims +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_fims/env/prod/terraform.tfvars b/.opex/api_fims/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_fims/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_mit_voucher/env/prod/backend.ini b/.opex/api_mit_voucher/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_mit_voucher/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_mit_voucher/env/prod/backend.tfvars b/.opex/api_mit_voucher/env/prod/backend.tfvars new file mode 100644 index 000000000..21fe5013e --- /dev/null +++ b/.opex/api_mit_voucher/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_mit_voucher.tfstate" diff --git a/.opex/api_mit_voucher/env/prod/config.yaml b/.opex/api_mit_voucher/env/prod/config.yaml new file mode 100644 index 000000000..53ff75def --- /dev/null +++ b/.opex/api_mit_voucher/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_mit_voucher.yaml +name: opex_iobackend_api_mit_voucher +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_mit_voucher/env/prod/terraform.tfvars b/.opex/api_mit_voucher/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_mit_voucher/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_myportal/env/prod/backend.ini b/.opex/api_myportal/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_myportal/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_myportal/env/prod/backend.tfvars b/.opex/api_myportal/env/prod/backend.tfvars new file mode 100644 index 000000000..a9456a23c --- /dev/null +++ b/.opex/api_myportal/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_myportal.tfstate" diff --git a/.opex/api_myportal/env/prod/config.yaml b/.opex/api_myportal/env/prod/config.yaml new file mode 100644 index 000000000..1c0282703 --- /dev/null +++ b/.opex/api_myportal/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_myportal.yaml +name: opex_iobackend_api_myportal +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_myportal/env/prod/terraform.tfvars b/.opex/api_myportal/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_myportal/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_notifications/env/prod/backend.ini b/.opex/api_notifications/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_notifications/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_notifications/env/prod/backend.tfvars b/.opex/api_notifications/env/prod/backend.tfvars new file mode 100644 index 000000000..c8d49fa65 --- /dev/null +++ b/.opex/api_notifications/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_notifications.tfstate" diff --git a/.opex/api_notifications/env/prod/config.yaml b/.opex/api_notifications/env/prod/config.yaml new file mode 100644 index 000000000..08738a907 --- /dev/null +++ b/.opex/api_notifications/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_notifications.yaml +name: opex_iobackend_api_notifications +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_notifications/env/prod/terraform.tfvars b/.opex/api_notifications/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_notifications/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_pagopa/env/prod/backend.ini b/.opex/api_pagopa/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_pagopa/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_pagopa/env/prod/backend.tfvars b/.opex/api_pagopa/env/prod/backend.tfvars new file mode 100644 index 000000000..3d7131aff --- /dev/null +++ b/.opex/api_pagopa/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_pagopa.tfstate" diff --git a/.opex/api_pagopa/env/prod/config.yaml b/.opex/api_pagopa/env/prod/config.yaml new file mode 100644 index 000000000..626de45a4 --- /dev/null +++ b/.opex/api_pagopa/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_pagopa.yaml +name: opex_iobackend_api_pagopa +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_pagopa/env/prod/terraform.tfvars b/.opex/api_pagopa/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_pagopa/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_parameters/env/prod/backend.ini b/.opex/api_parameters/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_parameters/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_parameters/env/prod/backend.tfvars b/.opex/api_parameters/env/prod/backend.tfvars new file mode 100644 index 000000000..8b5d0f847 --- /dev/null +++ b/.opex/api_parameters/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_parameters.tfstate" diff --git a/.opex/api_parameters/env/prod/config.yaml b/.opex/api_parameters/env/prod/config.yaml new file mode 100644 index 000000000..a60555298 --- /dev/null +++ b/.opex/api_parameters/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_parameters.yaml +name: opex_iobackend_api_parameters +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_parameters/env/prod/terraform.tfvars b/.opex/api_parameters/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_parameters/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_pn/env/prod/backend.ini b/.opex/api_pn/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_pn/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_pn/env/prod/backend.tfvars b/.opex/api_pn/env/prod/backend.tfvars new file mode 100644 index 000000000..b2ea208ba --- /dev/null +++ b/.opex/api_pn/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_pn.tfstate" diff --git a/.opex/api_pn/env/prod/config.yaml b/.opex/api_pn/env/prod/config.yaml new file mode 100644 index 000000000..442223c74 --- /dev/null +++ b/.opex/api_pn/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_pn.yaml +name: opex_iobackend_api_pn +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_pn/env/prod/terraform.tfvars b/.opex/api_pn/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_pn/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_public/env/prod/backend.ini b/.opex/api_public/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_public/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_public/env/prod/backend.tfvars b/.opex/api_public/env/prod/backend.tfvars new file mode 100644 index 000000000..7f78a681c --- /dev/null +++ b/.opex/api_public/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_public.tfstate" diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml new file mode 100644 index 000000000..c4b37c82f --- /dev/null +++ b/.opex/api_public/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_public.yaml +name: opex_iobackend_api_public +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_public/env/prod/terraform.tfvars b/.opex/api_public/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_public/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_session/env/prod/backend.ini b/.opex/api_session/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_session/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_session/env/prod/backend.tfvars b/.opex/api_session/env/prod/backend.tfvars new file mode 100644 index 000000000..913430df7 --- /dev/null +++ b/.opex/api_session/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_session.tfstate" diff --git a/.opex/api_session/env/prod/config.yaml b/.opex/api_session/env/prod/config.yaml new file mode 100644 index 000000000..df3ea507a --- /dev/null +++ b/.opex/api_session/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_session.yaml +name: opex_iobackend_api_session +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_session/env/prod/terraform.tfvars b/.opex/api_session/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_session/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} diff --git a/.opex/api_zendesk/env/prod/backend.ini b/.opex/api_zendesk/env/prod/backend.ini new file mode 100644 index 000000000..cf83055f5 --- /dev/null +++ b/.opex/api_zendesk/env/prod/backend.ini @@ -0,0 +1 @@ +subscription=PROD-IO diff --git a/.opex/api_zendesk/env/prod/backend.tfvars b/.opex/api_zendesk/env/prod/backend.tfvars new file mode 100644 index 000000000..191b6ebc6 --- /dev/null +++ b/.opex/api_zendesk/env/prod/backend.tfvars @@ -0,0 +1,4 @@ +resource_group_name = "terraform-state-rg" +storage_account_name = "tfappprodio" +container_name = "terraform-state" +key = "opex.io-backend.api_zendesk.tfstate" diff --git a/.opex/api_zendesk/env/prod/config.yaml b/.opex/api_zendesk/env/prod/config.yaml new file mode 100644 index 000000000..111e492e3 --- /dev/null +++ b/.opex/api_zendesk/env/prod/config.yaml @@ -0,0 +1,12 @@ +oa3_spec: api_zendesk.yaml +name: opex_iobackend_api_zendesk +location: West Europe +timespan: 5m +data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway +action_groups: + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA + - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP +overrides: + hosts: + - app-backend.io.italia.it + - api-app.io.pagopa.it diff --git a/.opex/api_zendesk/env/prod/terraform.tfvars b/.opex/api_zendesk/env/prod/terraform.tfvars new file mode 100644 index 000000000..1ac0be8f7 --- /dev/null +++ b/.opex/api_zendesk/env/prod/terraform.tfvars @@ -0,0 +1,10 @@ +prefix = "io" +env_short = "p" + +tags = { + CreatedBy = "Terraform" + Environment = "Prod" + Owner = "io" + Source = "https://github.com/pagopa/io-backend" + CostCenter = "TS310 - PAGAMENTI & SERVIZI" +} From a68a0c70d0d3ca17bbaece6ae919b1b513b2ac60 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 16:56:02 +0100 Subject: [PATCH 38/73] fix --- .../opex_api_cgn_operator_search.yml | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/opex_api_cgn_operator_search.yml diff --git a/.github/workflows/opex_api_cgn_operator_search.yml b/.github/workflows/opex_api_cgn_operator_search.yml new file mode 100644 index 000000000..0d80c96f3 --- /dev/null +++ b/.github/workflows/opex_api_cgn_operator_search.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_cgn_operator_search + +# Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_cgn_operator_search.yaml' + - '.github/workflows/opex_api_cgn_operator_search.yml' + - '.opex/api_cgn_operator_search/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_cgn_operator_search + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 From fa790ff8210076f5376ac83b7ba3c95a756694b8 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 16:58:01 +0100 Subject: [PATCH 39/73] fix --- .github/workflows/opex_api_eucovidcert.yml | 53 ++++++++++++++++++++++ .github/workflows/opex_api_fims.yml | 53 ++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 .github/workflows/opex_api_eucovidcert.yml create mode 100644 .github/workflows/opex_api_fims.yml diff --git a/.github/workflows/opex_api_eucovidcert.yml b/.github/workflows/opex_api_eucovidcert.yml new file mode 100644 index 000000000..4306fea09 --- /dev/null +++ b/.github/workflows/opex_api_eucovidcert.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_eucovidcert + +# Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_eucovidcert.yaml' + - '.github/workflows/opex_api_eucovidcert.yml' + - '.opex/api_eucovidcert/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_eucovidcert + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_fims.yml b/.github/workflows/opex_api_fims.yml new file mode 100644 index 000000000..635fd6076 --- /dev/null +++ b/.github/workflows/opex_api_fims.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_fims + +# Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_fims.yaml' + - '.github/workflows/opex_api_fims.yml' + - '.opex/api_fims/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_fims + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 From edac6d9426b26f794aeaf84a62f4f780ee560db5 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 16:59:58 +0100 Subject: [PATCH 40/73] fix --- .github/workflows/opex_api_api_bonus.yml | 2 +- .github/workflows/opex_api_api_bpd.yml | 2 +- .github/workflows/opex_api_auth.yml | 2 +- .github/workflows/opex_api_backend.yml | 2 +- .github/workflows/opex_api_cgn.yml | 2 +- .github/workflows/opex_api_cgn_operator_search.yml | 2 +- .github/workflows/opex_api_eucovidcert.yml | 2 +- .github/workflows/opex_api_fims.yml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/opex_api_api_bonus.yml b/.github/workflows/opex_api_api_bonus.yml index 7fb60f109..f8000ee64 100644 --- a/.github/workflows/opex_api_api_bonus.yml +++ b/.github/workflows/opex_api_api_bonus.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_bonus -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_api_bpd.yml b/.github/workflows/opex_api_api_bpd.yml index 81f52274e..ca47aea82 100644 --- a/.github/workflows/opex_api_api_bpd.yml +++ b/.github/workflows/opex_api_api_bpd.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_bpd -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index de92d1454..46e74f474 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_auth -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index fcbc096ef..cb6cbbad4 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_backend -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 5167736e7..432e8aaa1 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_cgn -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_cgn_operator_search.yml b/.github/workflows/opex_api_cgn_operator_search.yml index 0d80c96f3..dd2a9560d 100644 --- a/.github/workflows/opex_api_cgn_operator_search.yml +++ b/.github/workflows/opex_api_cgn_operator_search.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_cgn_operator_search -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_eucovidcert.yml b/.github/workflows/opex_api_eucovidcert.yml index 4306fea09..9cd571ea9 100644 --- a/.github/workflows/opex_api_eucovidcert.yml +++ b/.github/workflows/opex_api_eucovidcert.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_eucovidcert -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_fims.yml b/.github/workflows/opex_api_fims.yml index 635fd6076..fd9ff2cac 100644 --- a/.github/workflows/opex_api_fims.yml +++ b/.github/workflows/opex_api_fims.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_fims -# Controls when the workflow will run +### Controls when the workflow will run on: push: branches: From 6a0044e43430c68707128188f9931e34e5d880f2 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 17:02:16 +0100 Subject: [PATCH 41/73] oo --- .github/workflows/opex_api_mit_voucher.yml | 53 ++++++++++++++++++++ .github/workflows/opex_api_myportal.yml | 53 ++++++++++++++++++++ .github/workflows/opex_api_notifications.yml | 53 ++++++++++++++++++++ .github/workflows/opex_api_pagopa.yml | 53 ++++++++++++++++++++ 4 files changed, 212 insertions(+) create mode 100644 .github/workflows/opex_api_mit_voucher.yml create mode 100644 .github/workflows/opex_api_myportal.yml create mode 100644 .github/workflows/opex_api_notifications.yml create mode 100644 .github/workflows/opex_api_pagopa.yml diff --git a/.github/workflows/opex_api_mit_voucher.yml b/.github/workflows/opex_api_mit_voucher.yml new file mode 100644 index 000000000..981c69a04 --- /dev/null +++ b/.github/workflows/opex_api_mit_voucher.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_mit_voucher + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_mit_voucher.yaml' + - '.github/workflows/opex_api_mit_voucher.yml' + - '.opex/api_mit_voucher/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_mit_voucher + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_myportal.yml b/.github/workflows/opex_api_myportal.yml new file mode 100644 index 000000000..7dc8d9cad --- /dev/null +++ b/.github/workflows/opex_api_myportal.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_myportal + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_myportal.yaml' + - '.github/workflows/opex_api_myportal.yml' + - '.opex/api_myportal/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_myportal + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_notifications.yml b/.github/workflows/opex_api_notifications.yml new file mode 100644 index 000000000..e09e0c28c --- /dev/null +++ b/.github/workflows/opex_api_notifications.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_notifications + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_notifications.yaml' + - '.github/workflows/opex_api_notifications.yml' + - '.opex/api_notifications/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_notifications + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_pagopa.yml b/.github/workflows/opex_api_pagopa.yml new file mode 100644 index 000000000..d502422ad --- /dev/null +++ b/.github/workflows/opex_api_pagopa.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_pagopa + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_pagopa.yaml' + - '.github/workflows/opex_api_pagopa.yml' + - '.opex/api_pagopa/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_pagopa + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 From 85628bd52f0b82fa7962251ef56ef447d2a0aa2e Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 17:04:01 +0100 Subject: [PATCH 42/73] final --- .github/workflows/opex_api_parameters.yml | 53 +++++++++++++++++++++++ .github/workflows/opex_api_pn.yml | 53 +++++++++++++++++++++++ .github/workflows/opex_api_public.yml | 53 +++++++++++++++++++++++ .github/workflows/opex_api_session.yml | 53 +++++++++++++++++++++++ .github/workflows/opex_api_zendesk.yml | 53 +++++++++++++++++++++++ 5 files changed, 265 insertions(+) create mode 100644 .github/workflows/opex_api_parameters.yml create mode 100644 .github/workflows/opex_api_pn.yml create mode 100644 .github/workflows/opex_api_public.yml create mode 100644 .github/workflows/opex_api_session.yml create mode 100644 .github/workflows/opex_api_zendesk.yml diff --git a/.github/workflows/opex_api_parameters.yml b/.github/workflows/opex_api_parameters.yml new file mode 100644 index 000000000..2b3dbb226 --- /dev/null +++ b/.github/workflows/opex_api_parameters.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_parameters + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_parameters.yaml' + - '.github/workflows/opex_api_parameters.yml' + - '.opex/api_parameters/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_parameters + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_pn.yml b/.github/workflows/opex_api_pn.yml new file mode 100644 index 000000000..aaebd6ae0 --- /dev/null +++ b/.github/workflows/opex_api_pn.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_pn + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_pn.yaml' + - '.github/workflows/opex_api_pn.yml' + - '.opex/api_pn/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_pn + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_public.yml b/.github/workflows/opex_api_public.yml new file mode 100644 index 000000000..5fc5bea76 --- /dev/null +++ b/.github/workflows/opex_api_public.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_public + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_public.yaml' + - '.github/workflows/opex_api_public.yml' + - '.opex/api_public/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_public + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_session.yml b/.github/workflows/opex_api_session.yml new file mode 100644 index 000000000..e30debe35 --- /dev/null +++ b/.github/workflows/opex_api_session.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_session + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_session.yaml' + - '.github/workflows/opex_api_session.yml' + - '.opex/api_session/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_session + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 diff --git a/.github/workflows/opex_api_zendesk.yml b/.github/workflows/opex_api_zendesk.yml new file mode 100644 index 000000000..f3342b57e --- /dev/null +++ b/.github/workflows/opex_api_zendesk.yml @@ -0,0 +1,53 @@ +name: Opex Dashboard api_zendesk + +### Controls when the workflow will run +on: + push: + branches: + - opex-demo + paths: + - 'api_zendesk.yaml' + - '.github/workflows/opex_api_zendesk.yml' + - '.opex/api_zendesk/**' + +env: + CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d + SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b + API_NAME: api_zendesk + +permissions: + id-token: write + contents: read + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-22.04 + + strategy: + matrix: + environment: [prod] + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + id: checkout + # from https://github.com/actions/checkout/commits/main + uses: actions/checkout@1f9a0c22da41e6ebfa534300ef656657ea2c6707 + with: + persist-credentials: false + fetch-depth: 0 + + # from https://github.com/pagopa/opex-dashboard-azure-action/ + - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + with: + environment: ${{ matrix.environment }} + api-name: ${{ env.API_NAME }} + config: .opex/${{ env.API_NAME }}/env/${{ matrix.environment }}/config.yaml + client-id: ${{ env.CLIENT_ID }} + tenant-id: ${{ env.TENANT_ID }} + subscription-id: ${{ env.SUBSCRIPTION_ID }} + # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action + docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 From 4e4b2c81448d5e06ff61cb748aab7e1c9cf52538 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 17:06:06 +0100 Subject: [PATCH 43/73] fix api spec --- api_eucovidcert.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api_eucovidcert.yaml b/api_eucovidcert.yaml index 6c6094b5c..df75ef8ae 100644 --- a/api_eucovidcert.yaml +++ b/api_eucovidcert.yaml @@ -2,6 +2,7 @@ swagger: "2.0" info: version: 0.0.1 title: EU Covid Certificate service for IO App +host: localhost basePath: /api/v1/eucovidcert schemes: - https @@ -41,7 +42,7 @@ paths: $ref: "#/definitions/ProblemJson" '504': description: Gateway Timeout - + definitions: GetCertificateParams: type: object @@ -69,7 +70,7 @@ definitions: $ref: "https://raw.githubusercontent.com/pagopa/io-functions-eucovidcerts/v1.22.0/openapi/index.yaml#/definitions/PreferredLanguages" ProblemJson: $ref: "https://raw.githubusercontent.com/pagopa/io-functions-commons/v20.5.3/openapi/definitions.yaml#/ProblemJson" - + consumes: - application/json produces: From b90d3d47d057047366a168dcf4ceec3eb1ea403f Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Thu, 12 Jan 2023 17:26:15 +0100 Subject: [PATCH 44/73] trigger --- .github/workflows/opex_api_api_bonus.yml | 2 +- .github/workflows/opex_api_api_bpd.yml | 2 +- .github/workflows/opex_api_auth.yml | 2 +- .github/workflows/opex_api_backend.yml | 2 +- .github/workflows/opex_api_cgn.yml | 2 +- .github/workflows/opex_api_cgn_operator_search.yml | 2 +- .github/workflows/opex_api_eucovidcert.yml | 2 +- .github/workflows/opex_api_fims.yml | 2 +- .github/workflows/opex_api_mit_voucher.yml | 2 +- .github/workflows/opex_api_myportal.yml | 2 +- .github/workflows/opex_api_notifications.yml | 2 +- .github/workflows/opex_api_pagopa.yml | 2 +- .github/workflows/opex_api_parameters.yml | 2 +- .github/workflows/opex_api_pn.yml | 2 +- .github/workflows/opex_api_public.yml | 2 +- .github/workflows/opex_api_session.yml | 2 +- .github/workflows/opex_api_zendesk.yml | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/opex_api_api_bonus.yml b/.github/workflows/opex_api_api_bonus.yml index f8000ee64..7fb60f109 100644 --- a/.github/workflows/opex_api_api_bonus.yml +++ b/.github/workflows/opex_api_api_bonus.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_bonus -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_api_bpd.yml b/.github/workflows/opex_api_api_bpd.yml index ca47aea82..81f52274e 100644 --- a/.github/workflows/opex_api_api_bpd.yml +++ b/.github/workflows/opex_api_api_bpd.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_bpd -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 46e74f474..de92d1454 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_auth -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index cb6cbbad4..fcbc096ef 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_backend -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 432e8aaa1..5167736e7 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_cgn -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_cgn_operator_search.yml b/.github/workflows/opex_api_cgn_operator_search.yml index dd2a9560d..0d80c96f3 100644 --- a/.github/workflows/opex_api_cgn_operator_search.yml +++ b/.github/workflows/opex_api_cgn_operator_search.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_cgn_operator_search -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_eucovidcert.yml b/.github/workflows/opex_api_eucovidcert.yml index 9cd571ea9..4306fea09 100644 --- a/.github/workflows/opex_api_eucovidcert.yml +++ b/.github/workflows/opex_api_eucovidcert.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_eucovidcert -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_fims.yml b/.github/workflows/opex_api_fims.yml index fd9ff2cac..635fd6076 100644 --- a/.github/workflows/opex_api_fims.yml +++ b/.github/workflows/opex_api_fims.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_fims -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_mit_voucher.yml b/.github/workflows/opex_api_mit_voucher.yml index 981c69a04..03694d95d 100644 --- a/.github/workflows/opex_api_mit_voucher.yml +++ b/.github/workflows/opex_api_mit_voucher.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_mit_voucher -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_myportal.yml b/.github/workflows/opex_api_myportal.yml index 7dc8d9cad..14397dd7a 100644 --- a/.github/workflows/opex_api_myportal.yml +++ b/.github/workflows/opex_api_myportal.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_myportal -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_notifications.yml b/.github/workflows/opex_api_notifications.yml index e09e0c28c..ae7fbcbd8 100644 --- a/.github/workflows/opex_api_notifications.yml +++ b/.github/workflows/opex_api_notifications.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_notifications -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_pagopa.yml b/.github/workflows/opex_api_pagopa.yml index d502422ad..e2127e6bd 100644 --- a/.github/workflows/opex_api_pagopa.yml +++ b/.github/workflows/opex_api_pagopa.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_pagopa -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_parameters.yml b/.github/workflows/opex_api_parameters.yml index 2b3dbb226..76af8b7bf 100644 --- a/.github/workflows/opex_api_parameters.yml +++ b/.github/workflows/opex_api_parameters.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_parameters -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_pn.yml b/.github/workflows/opex_api_pn.yml index aaebd6ae0..77ca77cd9 100644 --- a/.github/workflows/opex_api_pn.yml +++ b/.github/workflows/opex_api_pn.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_pn -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_public.yml b/.github/workflows/opex_api_public.yml index 5fc5bea76..7615d8859 100644 --- a/.github/workflows/opex_api_public.yml +++ b/.github/workflows/opex_api_public.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_public -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_session.yml b/.github/workflows/opex_api_session.yml index e30debe35..dc8dd34ad 100644 --- a/.github/workflows/opex_api_session.yml +++ b/.github/workflows/opex_api_session.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_session -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: diff --git a/.github/workflows/opex_api_zendesk.yml b/.github/workflows/opex_api_zendesk.yml index f3342b57e..f415eaa68 100644 --- a/.github/workflows/opex_api_zendesk.yml +++ b/.github/workflows/opex_api_zendesk.yml @@ -1,6 +1,6 @@ name: Opex Dashboard api_zendesk -### Controls when the workflow will run +# Controls when the workflow will run on: push: branches: From 5b1fcaa98d810ab67844fa315fb51cd79506b728 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 13 Jan 2023 10:43:12 +0100 Subject: [PATCH 45/73] fix pr identity --- .github/workflows/opex_api_api_bonus.yml | 15 +++++++++++++-- .github/workflows/opex_api_api_bpd.yml | 15 +++++++++++++-- .github/workflows/opex_api_auth.yml | 15 +++++++++++++-- .github/workflows/opex_api_backend.yml | 15 +++++++++++++-- .github/workflows/opex_api_cgn.yml | 15 +++++++++++++-- .../workflows/opex_api_cgn_operator_search.yml | 15 +++++++++++++-- .github/workflows/opex_api_eucovidcert.yml | 15 +++++++++++++-- .github/workflows/opex_api_fims.yml | 15 +++++++++++++-- .github/workflows/opex_api_mit_voucher.yml | 15 +++++++++++++-- .github/workflows/opex_api_myportal.yml | 15 +++++++++++++-- .github/workflows/opex_api_notifications.yml | 15 +++++++++++++-- .github/workflows/opex_api_pagopa.yml | 15 +++++++++++++-- .github/workflows/opex_api_parameters.yml | 15 +++++++++++++-- .github/workflows/opex_api_pn.yml | 15 +++++++++++++-- .github/workflows/opex_api_public.yml | 15 +++++++++++++-- .github/workflows/opex_api_session.yml | 15 +++++++++++++-- .github/workflows/opex_api_zendesk.yml | 15 +++++++++++++-- .identity/02_application_master.tf | 3 +-- .identity/02_application_master_auth.tf | 2 +- .identity/02_application_pullrequest_auth.tf | 2 +- 20 files changed, 224 insertions(+), 38 deletions(-) diff --git a/.github/workflows/opex_api_api_bonus.yml b/.github/workflows/opex_api_api_bonus.yml index 7fb60f109..d70a7f7c5 100644 --- a/.github/workflows/opex_api_api_bonus.yml +++ b/.github/workflows/opex_api_api_bonus.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_bonus # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_bonus.yaml' + - '.github/workflows/opex_api_bonus.yml' + - '.opex/api_bonus/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_bonus.yaml' - '.github/workflows/opex_api_bonus.yml' - '.opex/api_bonus/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_bonus diff --git a/.github/workflows/opex_api_api_bpd.yml b/.github/workflows/opex_api_api_bpd.yml index 81f52274e..c6d3451db 100644 --- a/.github/workflows/opex_api_api_bpd.yml +++ b/.github/workflows/opex_api_api_bpd.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_bpd # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_bpd.yaml' + - '.github/workflows/opex_api_bpd.yml' + - '.opex/api_bpd/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_bpd.yaml' - '.github/workflows/opex_api_bpd.yml' - '.opex/api_bpd/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_bpd diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index de92d1454..a94fb1f3d 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_auth # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_auth.yaml' + - '.github/workflows/opex_api_auth.yml' + - '.opex/api_auth/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_auth.yaml' - '.github/workflows/opex_api_auth.yml' - '.opex/api_auth/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_auth diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index fcbc096ef..6c2009edd 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_backend # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_auth.yaml' + - '.github/workflows/opex_api_auth.yml' + - '.opex/api_auth/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_backend.yaml' - '.github/workflows/opex_api_backend.yml' - '.opex/api_backend/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_backend diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index 5167736e7..b33436afc 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_cgn # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_auth.yaml' + - '.github/workflows/opex_api_auth.yml' + - '.opex/api_auth/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_cgn.yaml' - '.github/workflows/opex_api_cgn.yml' - '.opex/api_cgn/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_cgn diff --git a/.github/workflows/opex_api_cgn_operator_search.yml b/.github/workflows/opex_api_cgn_operator_search.yml index 0d80c96f3..4fa54e04c 100644 --- a/.github/workflows/opex_api_cgn_operator_search.yml +++ b/.github/workflows/opex_api_cgn_operator_search.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_cgn_operator_search # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_auth.yaml' + - '.github/workflows/opex_api_auth.yml' + - '.opex/api_auth/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_cgn_operator_search.yaml' - '.github/workflows/opex_api_cgn_operator_search.yml' - '.opex/api_cgn_operator_search/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_cgn_operator_search diff --git a/.github/workflows/opex_api_eucovidcert.yml b/.github/workflows/opex_api_eucovidcert.yml index 4306fea09..2111b0810 100644 --- a/.github/workflows/opex_api_eucovidcert.yml +++ b/.github/workflows/opex_api_eucovidcert.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_eucovidcert # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_eucovidcert.yaml' + - '.github/workflows/opex_api_eucovidcert.yml' + - '.opex/api_eucovidcert/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_eucovidcert.yaml' - '.github/workflows/opex_api_eucovidcert.yml' - '.opex/api_eucovidcert/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_eucovidcert diff --git a/.github/workflows/opex_api_fims.yml b/.github/workflows/opex_api_fims.yml index 635fd6076..e22c4d7a5 100644 --- a/.github/workflows/opex_api_fims.yml +++ b/.github/workflows/opex_api_fims.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_fims # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_fims.yaml' + - '.github/workflows/opex_api_fims.yml' + - '.opex/api_fims/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_fims.yaml' - '.github/workflows/opex_api_fims.yml' - '.opex/api_fims/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_fims diff --git a/.github/workflows/opex_api_mit_voucher.yml b/.github/workflows/opex_api_mit_voucher.yml index 03694d95d..1472f5c06 100644 --- a/.github/workflows/opex_api_mit_voucher.yml +++ b/.github/workflows/opex_api_mit_voucher.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_mit_voucher # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_mit_voucher.yaml' + - '.github/workflows/opex_api_mit_voucher.yml' + - '.opex/api_mit_voucher/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_mit_voucher.yaml' - '.github/workflows/opex_api_mit_voucher.yml' - '.opex/api_mit_voucher/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_mit_voucher diff --git a/.github/workflows/opex_api_myportal.yml b/.github/workflows/opex_api_myportal.yml index 14397dd7a..f59a93301 100644 --- a/.github/workflows/opex_api_myportal.yml +++ b/.github/workflows/opex_api_myportal.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_myportal # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_myportal.yaml' + - '.github/workflows/opex_api_myportal.yml' + - '.opex/api_myportal/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_myportal.yaml' - '.github/workflows/opex_api_myportal.yml' - '.opex/api_myportal/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_myportal diff --git a/.github/workflows/opex_api_notifications.yml b/.github/workflows/opex_api_notifications.yml index ae7fbcbd8..159007898 100644 --- a/.github/workflows/opex_api_notifications.yml +++ b/.github/workflows/opex_api_notifications.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_notifications # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_notifications.yaml' + - '.github/workflows/opex_api_notifications.yml' + - '.opex/api_notifications/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_notifications.yaml' - '.github/workflows/opex_api_notifications.yml' - '.opex/api_notifications/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_notifications diff --git a/.github/workflows/opex_api_pagopa.yml b/.github/workflows/opex_api_pagopa.yml index e2127e6bd..ba3e87792 100644 --- a/.github/workflows/opex_api_pagopa.yml +++ b/.github/workflows/opex_api_pagopa.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_pagopa # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_pagopa.yaml' + - '.github/workflows/opex_api_pagopa.yml' + - '.opex/api_pagopa/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_pagopa.yaml' - '.github/workflows/opex_api_pagopa.yml' - '.opex/api_pagopa/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_pagopa diff --git a/.github/workflows/opex_api_parameters.yml b/.github/workflows/opex_api_parameters.yml index 76af8b7bf..0c9966b21 100644 --- a/.github/workflows/opex_api_parameters.yml +++ b/.github/workflows/opex_api_parameters.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_parameters # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_parameters.yaml' + - '.github/workflows/opex_api_parameters.yml' + - '.opex/api_parameters/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_parameters.yaml' - '.github/workflows/opex_api_parameters.yml' - '.opex/api_parameters/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_parameters diff --git a/.github/workflows/opex_api_pn.yml b/.github/workflows/opex_api_pn.yml index 77ca77cd9..1a397fc45 100644 --- a/.github/workflows/opex_api_pn.yml +++ b/.github/workflows/opex_api_pn.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_pn # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_pn.yaml' + - '.github/workflows/opex_api_pn.yml' + - '.opex/api_pn/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_pn.yaml' - '.github/workflows/opex_api_pn.yml' - '.opex/api_pn/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_pn diff --git a/.github/workflows/opex_api_public.yml b/.github/workflows/opex_api_public.yml index 7615d8859..5f50b88a4 100644 --- a/.github/workflows/opex_api_public.yml +++ b/.github/workflows/opex_api_public.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_public # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_public.yaml' + - '.github/workflows/opex_api_public.yml' + - '.opex/api_public/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_public.yaml' - '.github/workflows/opex_api_public.yml' - '.opex/api_public/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_public diff --git a/.github/workflows/opex_api_session.yml b/.github/workflows/opex_api_session.yml index dc8dd34ad..6a20c4fc9 100644 --- a/.github/workflows/opex_api_session.yml +++ b/.github/workflows/opex_api_session.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_session # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_session.yaml' + - '.github/workflows/opex_api_session.yml' + - '.opex/api_session/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_session.yaml' - '.github/workflows/opex_api_session.yml' - '.opex/api_session/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_session diff --git a/.github/workflows/opex_api_zendesk.yml b/.github/workflows/opex_api_zendesk.yml index f415eaa68..d45e9334f 100644 --- a/.github/workflows/opex_api_zendesk.yml +++ b/.github/workflows/opex_api_zendesk.yml @@ -2,16 +2,27 @@ name: Opex Dashboard api_zendesk # Controls when the workflow will run on: + workflow_dispatch: push: branches: - - opex-demo + - master + paths: + - 'api_zendesk.yaml' + - '.github/workflows/opex_api_zendesk.yml' + - '.opex/api_zendesk/**' + pull_request: + types: + - opened + - edited + - synchronize + - reopened paths: - 'api_zendesk.yaml' - '.github/workflows/opex_api_zendesk.yml' - '.opex/api_zendesk/**' env: - CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 + CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b API_NAME: api_zendesk diff --git a/.identity/02_application_master.tf b/.identity/02_application_master.tf index c02654b39..7da2ab66f 100644 --- a/.identity/02_application_master.tf +++ b/.identity/02_application_master.tf @@ -12,8 +12,7 @@ resource "azuread_application_federated_identity_credential" "master" { description = "github-federated" audiences = ["api://AzureADTokenExchange"] issuer = "https://token.actions.githubusercontent.com" - # subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" - subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/opex-demo" + subject = "repo:${local.github.org}/${local.github.repository}:ref:refs/heads/master" } output "azure_master_client_id" { diff --git a/.identity/02_application_master_auth.tf b/.identity/02_application_master_auth.tf index 39de83dd7..0bc0d1ef2 100644 --- a/.identity/02_application_master_auth.tf +++ b/.identity/02_application_master_auth.tf @@ -12,6 +12,6 @@ resource "azurerm_role_assignment" "master_terraform_storage_account_tfstate_app resource "azurerm_role_assignment" "master_terraform_resource_group_dashboards" { scope = data.azurerm_resource_group.dashboards.id - role_definition_name = "Contributor" + role_definition_name = "Monitoring Contributor" principal_id = azuread_service_principal.master.object_id } diff --git a/.identity/02_application_pullrequest_auth.tf b/.identity/02_application_pullrequest_auth.tf index f3379cfba..4d46f8d9f 100644 --- a/.identity/02_application_pullrequest_auth.tf +++ b/.identity/02_application_pullrequest_auth.tf @@ -12,6 +12,6 @@ resource "azurerm_role_assignment" "pullrequest_terraform_storage_account_tfstat resource "azurerm_role_assignment" "pullrequest_terraform_resource_group_dashboards" { scope = data.azurerm_resource_group.dashboards.id - role_definition_name = "Reader" + role_definition_name = "Monitoring Contributor" principal_id = azuread_service_principal.pullrequest.object_id } From b17e8ee612868d12fa78c7e62cd1a5130979c930 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 13 Jan 2023 10:45:06 +0100 Subject: [PATCH 46/73] try change --- .opex/api_backend/env/prod/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index fdbb0ba24..bda50fe26 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -12,7 +12,7 @@ overrides: endpoints: /api/v1/payment-requests/{rptId}: response_time_threshold: 7 - availability_threshold: 0.25 + availability_threshold: 0.24 /api/v1/payment-activations: response_time_threshold: 4 availability_threshold: 0.95 From 09aabb6118ce3b5f12b770ebe745a9f100f13b60 Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 13 Jan 2023 10:48:05 +0100 Subject: [PATCH 47/73] contr --- .identity/02_application_master_auth.tf | 2 +- .identity/02_application_pullrequest_auth.tf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.identity/02_application_master_auth.tf b/.identity/02_application_master_auth.tf index 0bc0d1ef2..39de83dd7 100644 --- a/.identity/02_application_master_auth.tf +++ b/.identity/02_application_master_auth.tf @@ -12,6 +12,6 @@ resource "azurerm_role_assignment" "master_terraform_storage_account_tfstate_app resource "azurerm_role_assignment" "master_terraform_resource_group_dashboards" { scope = data.azurerm_resource_group.dashboards.id - role_definition_name = "Monitoring Contributor" + role_definition_name = "Contributor" principal_id = azuread_service_principal.master.object_id } diff --git a/.identity/02_application_pullrequest_auth.tf b/.identity/02_application_pullrequest_auth.tf index 4d46f8d9f..cfd985f11 100644 --- a/.identity/02_application_pullrequest_auth.tf +++ b/.identity/02_application_pullrequest_auth.tf @@ -12,6 +12,6 @@ resource "azurerm_role_assignment" "pullrequest_terraform_storage_account_tfstat resource "azurerm_role_assignment" "pullrequest_terraform_resource_group_dashboards" { scope = data.azurerm_resource_group.dashboards.id - role_definition_name = "Monitoring Contributor" + role_definition_name = "Contributor" principal_id = azuread_service_principal.pullrequest.object_id } From 8d3ac4c4abe092212a4c64683c240b619f74dc0f Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 13 Jan 2023 10:48:40 +0100 Subject: [PATCH 48/73] rollback --- .opex/api_backend/env/prod/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index bda50fe26..fdbb0ba24 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -12,7 +12,7 @@ overrides: endpoints: /api/v1/payment-requests/{rptId}: response_time_threshold: 7 - availability_threshold: 0.24 + availability_threshold: 0.25 /api/v1/payment-activations: response_time_threshold: 4 availability_threshold: 0.95 From 021ab3c2be833882834abfd4100b0ec4bcfc3fca Mon Sep 17 00:00:00 2001 From: pasqualedevita <> Date: Fri, 13 Jan 2023 10:58:45 +0100 Subject: [PATCH 49/73] fix dashboard id and name --- .opex/api_auth/env/prod/config.yaml | 2 +- .opex/api_backend/env/prod/config.yaml | 2 +- .opex/api_cgn/env/prod/config.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.opex/api_auth/env/prod/config.yaml b/.opex/api_auth/env/prod/config.yaml index e504672d5..2e709cbf6 100644 --- a/.opex/api_auth/env/prod/config.yaml +++ b/.opex/api_auth/env/prod/config.yaml @@ -1,5 +1,5 @@ oa3_spec: api_auth.yaml -name: opex_api_auth +name: opex_iobackend_api_auth location: West Europe timespan: 10m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index fdbb0ba24..d9cea7130 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -1,5 +1,5 @@ oa3_spec: api_backend.yaml -name: opex_api_backend +name: opex_iobackend_api_backend location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway diff --git a/.opex/api_cgn/env/prod/config.yaml b/.opex/api_cgn/env/prod/config.yaml index 1783ea859..82e2f1f05 100644 --- a/.opex/api_cgn/env/prod/config.yaml +++ b/.opex/api_cgn/env/prod/config.yaml @@ -1,5 +1,5 @@ oa3_spec: api_cgn.yaml -name: opex_api_cgn +name: opex_iobackend_api_cgn location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway From 236788b30775f88283365f29980da89807dca7ea Mon Sep 17 00:00:00 2001 From: Greta Quadrati <75862507+gquadrati@users.noreply.github.com> Date: Fri, 13 Jan 2023 12:30:32 +0100 Subject: [PATCH 50/73] Apply suggestions from code review --- .opex/api_auth/env/prod/config.yaml | 2 +- .opex/api_backend/env/prod/config.yaml | 2 +- .opex/api_cgn/env/prod/config.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.opex/api_auth/env/prod/config.yaml b/.opex/api_auth/env/prod/config.yaml index 2e709cbf6..9a21b1aaa 100644 --- a/.opex/api_auth/env/prod/config.yaml +++ b/.opex/api_auth/env/prod/config.yaml @@ -4,7 +4,7 @@ location: West Europe timespan: 10m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror +- /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index d9cea7130..0268f4f3d 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -4,7 +4,7 @@ location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror +- /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_cgn/env/prod/config.yaml b/.opex/api_cgn/env/prod/config.yaml index 82e2f1f05..e3115ac2b 100644 --- a/.opex/api_cgn/env/prod/config.yaml +++ b/.opex/api_cgn/env/prod/config.yaml @@ -4,7 +4,7 @@ location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror +- /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA overrides: hosts: - app-backend.io.italia.it From c065fe14b6892bb6ae31943a7a14eacc778b2c13 Mon Sep 17 00:00:00 2001 From: Greta Quadrati <75862507+gquadrati@users.noreply.github.com> Date: Wed, 25 Jan 2023 12:59:11 +0100 Subject: [PATCH 51/73] Update .opex/api_eucovidcert/env/prod/config.yaml --- .opex/api_eucovidcert/env/prod/config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.opex/api_eucovidcert/env/prod/config.yaml b/.opex/api_eucovidcert/env/prod/config.yaml index 92d39f001..26d980c8c 100644 --- a/.opex/api_eucovidcert/env/prod/config.yaml +++ b/.opex/api_eucovidcert/env/prod/config.yaml @@ -4,8 +4,7 @@ location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it From 4cf48bb8e5532c3ecee40b8d37b90cd171212c74 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Wed, 1 Feb 2023 11:24:03 +0100 Subject: [PATCH 52/73] override eucovidcert endpoint threshold --- .opex/api_eucovidcert/env/prod/config.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.opex/api_eucovidcert/env/prod/config.yaml b/.opex/api_eucovidcert/env/prod/config.yaml index 26d980c8c..2ee9ba8e9 100644 --- a/.opex/api_eucovidcert/env/prod/config.yaml +++ b/.opex/api_eucovidcert/env/prod/config.yaml @@ -9,3 +9,7 @@ overrides: hosts: - app-backend.io.italia.it - api-app.io.pagopa.it + endpoints: + /api/v1/eucovidcert/certificate: + response_time_threshold: 3 + availability_threshold: 0.98 \ No newline at end of file From 75fe3e503eedcca94ccdef51ef08b7175fc1a19e Mon Sep 17 00:00:00 2001 From: gquadrati Date: Mon, 27 Mar 2023 12:22:58 +0200 Subject: [PATCH 53/73] wip --- .opex/api_public/env/prod/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index c4b37c82f..51b581469 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -1,4 +1,4 @@ -oa3_spec: api_public.yaml +oa3_spec: openapi/generated/api_public.yaml name: opex_iobackend_api_public location: West Europe timespan: 5m From 17dba4d9d080920244e61d0266f847f4004071e6 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Mon, 27 Mar 2023 12:34:06 +0200 Subject: [PATCH 54/73] wip --- .github/workflows/opex_api_auth.yml | 2 +- .opex/api_public/env/prod/config.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index a94fb1f3d..6b43015af 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.0.4 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index 51b581469..c4b37c82f 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -1,4 +1,4 @@ -oa3_spec: openapi/generated/api_public.yaml +oa3_spec: api_public.yaml name: opex_iobackend_api_public location: West Europe timespan: 5m From fe44c3beea8b57d1515004900d5e45d04c0b57c9 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Mon, 27 Mar 2023 13:03:50 +0200 Subject: [PATCH 55/73] fix api_public openapi --- api_lollipop.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api_lollipop.yaml b/api_lollipop.yaml index 74648e863..9713f4237 100644 --- a/api_lollipop.yaml +++ b/api_lollipop.yaml @@ -16,11 +16,11 @@ parameters: description: represents a Base64url encode of a JWK Public Key format: JwkPublicKeyFromToken x-import: '@pagopa/ts-commons/lib/jwk' - example: "eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6IjRmMzB6dUdNcm9kRXl3cEoxelZKbWFRLVYtZlM4OVZBTW8yZnN6dWxOTmsiLCJ5IjoibG5NdmExengxaFJncVY5enVEU3dkV0dyUlhTREl4UXQ1YVJVeG1EVW44NCJ9" + x-example: "eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6IjRmMzB6dUdNcm9kRXl3cEoxelZKbWFRLVYtZlM4OVZBTW8yZnN6dWxOTmsiLCJ5IjoibG5NdmExengxaFJncVY5enVEU3dkV0dyUlhTREl4UXQ1YVJVeG1EVW44NCJ9" JwkPubKeyHashAlgorithm: in: header name: x-pagopa-lollipop-pub-key-hash-algo type: string enum: [sha256, sha384, sha512] description: Represents the selected hashing algorithm for jwk thumbprint - example: "sha256" + x-example: "sha256" From a950126b0c3631ee5ac52dff0b30d4685de72e87 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Mon, 27 Mar 2023 14:48:51 +0200 Subject: [PATCH 56/73] add acs endpoint to api_public openapi --- api_public.yaml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/api_public.yaml b/api_public.yaml index 8cadb9838..15cd519f5 100644 --- a/api_public.yaml +++ b/api_public.yaml @@ -57,7 +57,7 @@ paths: operationId: login summary: Login SPID/CIE description: Login with SPID or CIE for IO APP - parameters: + parameters: - $ref: "#/parameters/EntityId" - $ref: "#/parameters/AuthLevel" - $ref: "#/parameters/JwkPubKeyToken" @@ -80,6 +80,22 @@ paths: $ref: "#/definitions/ProblemJson" "503": description: Service unavailable + "/assertionConsumerService": + post: + operationId: acs + summary: ACS step of Login SPID/CIE + description: Login with SPID or CIE for IO APP + parameters: + - in: body + name: body + schema: + $ref: "#/definitions/SAMLResponse" + responses: + "301": + description: Redirect to home page + headers: + Location: + type: string definitions: FiscalCode: @@ -130,6 +146,10 @@ definitions: minLength: 1 required: - token + SAMLResponse: + type: string + description: A string representation of a signed SPID/CIE response + minLength: 1 consumes: - application/json produces: From 65e97f88d2c3cb891b7ebe222a5cd31ea1d05065 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Mon, 27 Mar 2023 15:41:50 +0200 Subject: [PATCH 57/73] move to iopquarantineerror + add ovrride --- .opex/api_public/env/prod/config.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index c4b37c82f..80d86afe7 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -4,9 +4,11 @@ location: West Europe timespan: 5m data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it - api-app.io.pagopa.it + endpoints: + /assertionConsumerService: + response_time_threshold: 1.5 \ No newline at end of file From 0f2a452b3958b041f757c13414528b14925ed7f1 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Tue, 28 Mar 2023 15:26:42 +0200 Subject: [PATCH 58/73] move threshold to 3s for acs endpoint --- .opex/api_public/env/prod/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index 80d86afe7..a775bd5f4 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -11,4 +11,4 @@ overrides: - api-app.io.pagopa.it endpoints: /assertionConsumerService: - response_time_threshold: 1.5 \ No newline at end of file + response_time_threshold: 3 \ No newline at end of file From 652f8d32f7c2623c2bcd876dd925712ab6e1d83c Mon Sep 17 00:00:00 2001 From: gquadrati Date: Tue, 4 Apr 2023 11:41:00 +0200 Subject: [PATCH 59/73] upgrade opex-dashboard --- .github/workflows/opex_api_public.yml | 4 ++-- .opex/api_public/env/prod/config.yaml | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/opex_api_public.yml b/.github/workflows/opex_api_public.yml index 5f50b88a4..6443bac78 100644 --- a/.github/workflows/opex_api_public.yml +++ b/.github/workflows/opex_api_public.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index a775bd5f4..9363440b0 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -2,6 +2,9 @@ oa3_spec: api_public.yaml name: opex_iobackend_api_public location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror From 5eb28381665ec90e58151737256f375d4877b41d Mon Sep 17 00:00:00 2001 From: gquadrati Date: Tue, 4 Apr 2023 12:55:05 +0200 Subject: [PATCH 60/73] upgrade opex-dashboard --- .github/workflows/opex_api_api_bonus.yml | 4 ++-- .github/workflows/opex_api_api_bpd.yml | 4 ++-- .github/workflows/opex_api_auth.yml | 16 ++++++++-------- .github/workflows/opex_api_backend.yml | 4 ++-- .github/workflows/opex_api_cgn.yml | 4 ++-- .../workflows/opex_api_cgn_operator_search.yml | 4 ++-- .github/workflows/opex_api_eucovidcert.yml | 4 ++-- .github/workflows/opex_api_fims.yml | 4 ++-- .github/workflows/opex_api_mit_voucher.yml | 4 ++-- .github/workflows/opex_api_myportal.yml | 4 ++-- .github/workflows/opex_api_notifications.yml | 4 ++-- .github/workflows/opex_api_pagopa.yml | 4 ++-- .github/workflows/opex_api_parameters.yml | 4 ++-- .github/workflows/opex_api_pn.yml | 4 ++-- .github/workflows/opex_api_session.yml | 4 ++-- .github/workflows/opex_api_zendesk.yml | 4 ++-- 16 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/opex_api_api_bonus.yml b/.github/workflows/opex_api_api_bonus.yml index d70a7f7c5..3c41fc25f 100644 --- a/.github/workflows/opex_api_api_bonus.yml +++ b/.github/workflows/opex_api_api_bonus.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_api_bpd.yml b/.github/workflows/opex_api_api_bpd.yml index c6d3451db..8e452e6ff 100644 --- a/.github/workflows/opex_api_api_bpd.yml +++ b/.github/workflows/opex_api_api_bpd.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index 6b43015af..f5d800111 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -7,9 +7,9 @@ on: branches: - master paths: - - 'api_auth.yaml' - - '.github/workflows/opex_api_auth.yml' - - '.opex/api_auth/**' + - "api_auth.yaml" + - ".github/workflows/opex_api_auth.yml" + - ".opex/api_auth/**" pull_request: types: - opened @@ -17,9 +17,9 @@ on: - synchronize - reopened paths: - - 'api_auth.yaml' - - '.github/workflows/opex_api_auth.yml' - - '.opex/api_auth/**' + - "api_auth.yaml" + - ".github/workflows/opex_api_auth.yml" + - ".opex/api_auth/**" env: CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.4 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index 6c2009edd..a7d9c7784 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index b33436afc..fe57f9cee 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_cgn_operator_search.yml b/.github/workflows/opex_api_cgn_operator_search.yml index 4fa54e04c..d46bec6cc 100644 --- a/.github/workflows/opex_api_cgn_operator_search.yml +++ b/.github/workflows/opex_api_cgn_operator_search.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_eucovidcert.yml b/.github/workflows/opex_api_eucovidcert.yml index 2111b0810..c7f5f3839 100644 --- a/.github/workflows/opex_api_eucovidcert.yml +++ b/.github/workflows/opex_api_eucovidcert.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_fims.yml b/.github/workflows/opex_api_fims.yml index e22c4d7a5..d93cbd282 100644 --- a/.github/workflows/opex_api_fims.yml +++ b/.github/workflows/opex_api_fims.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_mit_voucher.yml b/.github/workflows/opex_api_mit_voucher.yml index 1472f5c06..cb748a865 100644 --- a/.github/workflows/opex_api_mit_voucher.yml +++ b/.github/workflows/opex_api_mit_voucher.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_myportal.yml b/.github/workflows/opex_api_myportal.yml index f59a93301..46976ccf0 100644 --- a/.github/workflows/opex_api_myportal.yml +++ b/.github/workflows/opex_api_myportal.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_notifications.yml b/.github/workflows/opex_api_notifications.yml index 159007898..025501a72 100644 --- a/.github/workflows/opex_api_notifications.yml +++ b/.github/workflows/opex_api_notifications.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_pagopa.yml b/.github/workflows/opex_api_pagopa.yml index ba3e87792..83d7545c8 100644 --- a/.github/workflows/opex_api_pagopa.yml +++ b/.github/workflows/opex_api_pagopa.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_parameters.yml b/.github/workflows/opex_api_parameters.yml index 0c9966b21..395330740 100644 --- a/.github/workflows/opex_api_parameters.yml +++ b/.github/workflows/opex_api_parameters.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_pn.yml b/.github/workflows/opex_api_pn.yml index 1a397fc45..2ef323363 100644 --- a/.github/workflows/opex_api_pn.yml +++ b/.github/workflows/opex_api_pn.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_session.yml b/.github/workflows/opex_api_session.yml index 6a20c4fc9..a7bc1c902 100644 --- a/.github/workflows/opex_api_session.yml +++ b/.github/workflows/opex_api_session.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 diff --git a/.github/workflows/opex_api_zendesk.yml b/.github/workflows/opex_api_zendesk.yml index d45e9334f..a9737a657 100644 --- a/.github/workflows/opex_api_zendesk.yml +++ b/.github/workflows/opex_api_zendesk.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.0.3 + - uses: pagopa/opex-dashboard-azure-action@v1.1.0 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:d9465f04e469c8f65bb1fb21cb9688508c64fda75495f552e858fb5a9580be90 + docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 From 4de2855ca167011050692a95923c6386b7ff742f Mon Sep 17 00:00:00 2001 From: gquadrati Date: Wed, 5 Apr 2023 08:36:40 +0200 Subject: [PATCH 61/73] fix api_bpd openapi --- api_bpd.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api_bpd.yaml b/api_bpd.yaml index 5c92d24dc..e722fdd57 100644 --- a/api_bpd.yaml +++ b/api_bpd.yaml @@ -35,6 +35,8 @@ paths: definitions: BPDUser: $ref: "api_backend.yaml#/definitions/FederatedUser" + LimitedFederatedUser: + $ref: "api_backend.yaml#/definitions/LimitedFederatedUser" ProblemJson: $ref: "https://raw.githubusercontent.com/pagopa/io-functions-commons/v5.0.0/openapi/definitions.yaml#/ProblemJson" FiscalCode: From d5f27eb2adc9b97a0deab9f7cffa331f85451b42 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Wed, 5 Apr 2023 08:43:54 +0200 Subject: [PATCH 62/73] fix api_fims openapi --- api_fims.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api_fims.yaml b/api_fims.yaml index 56501f315..b436b6823 100644 --- a/api_fims.yaml +++ b/api_fims.yaml @@ -49,6 +49,8 @@ paths: definitions: FederatedUser: $ref: "api_backend.yaml#/definitions/FederatedUser" + LimitedFederatedUser: + $ref: "api_backend.yaml#/definitions/LimitedFederatedUser" FIMSUser: allOf: - type: object From 66f128a29c0b6bca37dd37f6709cf161ce86bfbd Mon Sep 17 00:00:00 2001 From: gquadrati Date: Wed, 5 Apr 2023 08:45:30 +0200 Subject: [PATCH 63/73] fix api_mit_voucher openapi --- api_mit_voucher.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/api_mit_voucher.yaml b/api_mit_voucher.yaml index 832175bf7..054724de3 100644 --- a/api_mit_voucher.yaml +++ b/api_mit_voucher.yaml @@ -2,6 +2,7 @@ swagger: "2.0" info: version: 0.0.1 title: MIT Voucher service for IO App +host: localhost basePath: /api/v1/mitvoucher/auth schemes: - https From 9c36fa7cf0b5d77a9d724c3703e62f37eb79c1ee Mon Sep 17 00:00:00 2001 From: gquadrati Date: Wed, 5 Apr 2023 08:47:17 +0200 Subject: [PATCH 64/73] fix api_pagopa openapi --- api_pagopa.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api_pagopa.yaml b/api_pagopa.yaml index e2db6f703..438b226ba 100644 --- a/api_pagopa.yaml +++ b/api_pagopa.yaml @@ -59,6 +59,8 @@ definitions: $ref: "https://raw.githubusercontent.com/pagopa/io-functions-commons/v5.0.0/openapi/definitions.yaml#/FiscalCode" FederatedUser: $ref: "api_backend.yaml#/definitions/FederatedUser" + LimitedFederatedUser: + $ref: "api_backend.yaml#/definitions/LimitedFederatedUser" PagoPAUser: title: PagoPA user description: User data needed by PagaPA proxy. From 3e83d5d0a103affedd2d1fc2964512cd43381d55 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Wed, 5 Apr 2023 08:53:08 +0200 Subject: [PATCH 65/73] fix api_parameters openapi --- api_parameters.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api_parameters.yaml b/api_parameters.yaml index 4edb1c9ad..acc2147a3 100644 --- a/api_parameters.yaml +++ b/api_parameters.yaml @@ -2,6 +2,8 @@ swagger: "2.0" info: title: "IO API parameters" version: "0.1" +host: localhost +basePath: / paths: "/dummy": get: From c892b540bc4a5edb822f080c7da276e019ef7eb6 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Wed, 5 Apr 2023 09:08:51 +0200 Subject: [PATCH 66/73] move to new action groups, set evaluation parameters --- .opex/api_auth/env/prod/config.yaml | 5 ++++- .opex/api_backend/env/prod/config.yaml | 5 ++++- .opex/api_bonus/env/prod/config.yaml | 6 ++++-- .opex/api_bpd/env/prod/config.yaml | 6 ++++-- .opex/api_cgn/env/prod/config.yaml | 5 ++++- .opex/api_cgn_operator_search/env/prod/config.yaml | 6 ++++-- .opex/api_fims/env/prod/config.yaml | 6 ++++-- .opex/api_mit_voucher/env/prod/config.yaml | 6 ++++-- .opex/api_myportal/env/prod/config.yaml | 6 ++++-- .opex/api_notifications/env/prod/config.yaml | 6 ++++-- .opex/api_pagopa/env/prod/config.yaml | 6 ++++-- .opex/api_parameters/env/prod/config.yaml | 6 ++++-- .opex/api_pn/env/prod/config.yaml | 6 ++++-- .opex/api_public/env/prod/config.yaml | 2 +- .opex/api_session/env/prod/config.yaml | 6 ++++-- .opex/api_zendesk/env/prod/config.yaml | 6 ++++-- 16 files changed, 61 insertions(+), 28 deletions(-) diff --git a/.opex/api_auth/env/prod/config.yaml b/.opex/api_auth/env/prod/config.yaml index 9a21b1aaa..2485d4869 100644 --- a/.opex/api_auth/env/prod/config.yaml +++ b/.opex/api_auth/env/prod/config.yaml @@ -2,9 +2,12 @@ oa3_spec: api_auth.yaml name: opex_iobackend_api_auth location: West Europe timespan: 10m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 2 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: -- /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA +- /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index 0268f4f3d..74aad60d0 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -2,9 +2,12 @@ oa3_spec: api_backend.yaml name: opex_iobackend_api_backend location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: -- /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA +- /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_bonus/env/prod/config.yaml b/.opex/api_bonus/env/prod/config.yaml index 66f87a686..69934407c 100644 --- a/.opex/api_bonus/env/prod/config.yaml +++ b/.opex/api_bonus/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_bonus.yaml name: opex_iobackend_api_bonus location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_bpd/env/prod/config.yaml b/.opex/api_bpd/env/prod/config.yaml index d8b766736..6328fb74c 100644 --- a/.opex/api_bpd/env/prod/config.yaml +++ b/.opex/api_bpd/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_bpd.yaml name: opex_iobackend_api_bpd location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_cgn/env/prod/config.yaml b/.opex/api_cgn/env/prod/config.yaml index e3115ac2b..15be54440 100644 --- a/.opex/api_cgn/env/prod/config.yaml +++ b/.opex/api_cgn/env/prod/config.yaml @@ -2,9 +2,12 @@ oa3_spec: api_cgn.yaml name: opex_iobackend_api_cgn location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: -- /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA +- /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_cgn_operator_search/env/prod/config.yaml b/.opex/api_cgn_operator_search/env/prod/config.yaml index 08ee94ea1..65e0d13e2 100644 --- a/.opex/api_cgn_operator_search/env/prod/config.yaml +++ b/.opex/api_cgn_operator_search/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_cgn_operator_search.yaml name: opex_iobackend_api_cgn_operator_search location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_fims/env/prod/config.yaml b/.opex/api_fims/env/prod/config.yaml index 1c861e1b4..b026d3ae4 100644 --- a/.opex/api_fims/env/prod/config.yaml +++ b/.opex/api_fims/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_fims.yaml name: opex_iobackend_api_fims location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_mit_voucher/env/prod/config.yaml b/.opex/api_mit_voucher/env/prod/config.yaml index 53ff75def..701a0d531 100644 --- a/.opex/api_mit_voucher/env/prod/config.yaml +++ b/.opex/api_mit_voucher/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_mit_voucher.yaml name: opex_iobackend_api_mit_voucher location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_myportal/env/prod/config.yaml b/.opex/api_myportal/env/prod/config.yaml index 1c0282703..4a3d61d43 100644 --- a/.opex/api_myportal/env/prod/config.yaml +++ b/.opex/api_myportal/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_myportal.yaml name: opex_iobackend_api_myportal location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_notifications/env/prod/config.yaml b/.opex/api_notifications/env/prod/config.yaml index 08738a907..578746a63 100644 --- a/.opex/api_notifications/env/prod/config.yaml +++ b/.opex/api_notifications/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_notifications.yaml name: opex_iobackend_api_notifications location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_pagopa/env/prod/config.yaml b/.opex/api_pagopa/env/prod/config.yaml index 626de45a4..e8b55c42b 100644 --- a/.opex/api_pagopa/env/prod/config.yaml +++ b/.opex/api_pagopa/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_pagopa.yaml name: opex_iobackend_api_pagopa location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_parameters/env/prod/config.yaml b/.opex/api_parameters/env/prod/config.yaml index a60555298..ee90a984b 100644 --- a/.opex/api_parameters/env/prod/config.yaml +++ b/.opex/api_parameters/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_parameters.yaml name: opex_iobackend_api_parameters location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_pn/env/prod/config.yaml b/.opex/api_pn/env/prod/config.yaml index 442223c74..e2b1576be 100644 --- a/.opex/api_pn/env/prod/config.yaml +++ b/.opex/api_pn/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_pn.yaml name: opex_iobackend_api_pn location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index 9363440b0..7c6032876 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -7,7 +7,7 @@ evaluation_time_window: 30 event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_session/env/prod/config.yaml b/.opex/api_session/env/prod/config.yaml index df3ea507a..c0a24e15b 100644 --- a/.opex/api_session/env/prod/config.yaml +++ b/.opex/api_session/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_session.yaml name: opex_iobackend_api_session location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it diff --git a/.opex/api_zendesk/env/prod/config.yaml b/.opex/api_zendesk/env/prod/config.yaml index 111e492e3..485b8c641 100644 --- a/.opex/api_zendesk/env/prod/config.yaml +++ b/.opex/api_zendesk/env/prod/config.yaml @@ -2,10 +2,12 @@ oa3_spec: api_zendesk.yaml name: opex_iobackend_api_zendesk location: West Europe timespan: 5m +evaluation_frequency: 5 +evaluation_time_window: 30 +event_occurrences: 3 data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/SlackPagoPA - - /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/EmailPagoP + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it From cbf8e11b015500a131affcf40f621b38c80c29d7 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Thu, 6 Apr 2023 09:37:08 +0200 Subject: [PATCH 67/73] override defaults for payment APIs --- .opex/api_backend/env/prod/config.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.opex/api_backend/env/prod/config.yaml b/.opex/api_backend/env/prod/config.yaml index 74aad60d0..93f7dca92 100644 --- a/.opex/api_backend/env/prod/config.yaml +++ b/.opex/api_backend/env/prod/config.yaml @@ -15,7 +15,11 @@ overrides: endpoints: /api/v1/payment-requests/{rptId}: response_time_threshold: 7 - availability_threshold: 0.25 + availability_event_occurrences: 5 + availability_threshold: 0.50 + response_time_event_occurrences: 5 /api/v1/payment-activations: response_time_threshold: 4 + availability_event_occurrences: 5 availability_threshold: 0.95 + response_time_event_occurrences: 5 From 53971dbaa3498d80c04f7733d1b61712a6a4495d Mon Sep 17 00:00:00 2001 From: gquadrati Date: Fri, 21 Apr 2023 09:23:48 +0200 Subject: [PATCH 68/73] tune api_public alerts --- .opex/api_public/env/prod/config.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index 7c6032876..edad5f6af 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -2,9 +2,9 @@ oa3_spec: api_public.yaml name: opex_iobackend_api_public location: West Europe timespan: 5m -evaluation_frequency: 5 +evaluation_frequency: 10 evaluation_time_window: 30 -event_occurrences: 3 +event_occurrences: 4 //After 5*4=20 min data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror @@ -14,4 +14,5 @@ overrides: - api-app.io.pagopa.it endpoints: /assertionConsumerService: - response_time_threshold: 3 \ No newline at end of file + response_time_threshold: 4 + availability_threshold: 0.50 \ No newline at end of file From f08909a88fe1b1d8dbb7e0a73c1f9a9b2e6334ae Mon Sep 17 00:00:00 2001 From: gquadrati Date: Fri, 21 Apr 2023 13:16:06 +0200 Subject: [PATCH 69/73] fix --- .opex/api_public/env/prod/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index edad5f6af..d6583bf03 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -4,7 +4,7 @@ location: West Europe timespan: 5m evaluation_frequency: 10 evaluation_time_window: 30 -event_occurrences: 4 //After 5*4=20 min +event_occurrences: 4 # After 5*4=20 min data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror From 12795f9951473dea138bfd7dae5e5c066b6dba70 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Thu, 27 Apr 2023 09:57:08 +0200 Subject: [PATCH 70/73] tune all api_public endpoints --- .opex/api_public/env/prod/config.yaml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index d6583bf03..ba4660b02 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -13,6 +13,15 @@ overrides: - app-backend.io.italia.it - api-app.io.pagopa.it endpoints: + /info: + response_time_threshold: 3 + availability_threshold: 0.70 + /test-login: + response_time_threshold: 3 + availability_threshold: 0.70 + /login: + response_time_threshold: 3 + availability_threshold: 0.70 /assertionConsumerService: - response_time_threshold: 4 - availability_threshold: 0.50 \ No newline at end of file + response_time_threshold: 3 + availability_threshold: 0.70 From af14370d43c6d15c66fa225dbbf1af922bc75fc5 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Sat, 29 Apr 2023 10:04:54 +0200 Subject: [PATCH 71/73] wip --- .opex/api_public/env/prod/config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index ba4660b02..95c6e7028 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -14,14 +14,14 @@ overrides: - api-app.io.pagopa.it endpoints: /info: - response_time_threshold: 3 + response_time_threshold: 8 availability_threshold: 0.70 /test-login: - response_time_threshold: 3 + response_time_threshold: 8 availability_threshold: 0.70 /login: - response_time_threshold: 3 + response_time_threshold: 8 availability_threshold: 0.70 /assertionConsumerService: - response_time_threshold: 3 + response_time_threshold: 9 availability_threshold: 0.70 From a2596836c285ce54360172ede9d5c80f39688aa4 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Thu, 20 Jul 2023 13:30:28 +0200 Subject: [PATCH 72/73] update opex-dashboard version --- .github/workflows/opex_api_api_bonus.yml | 4 ++-- .github/workflows/opex_api_api_bpd.yml | 4 ++-- .github/workflows/opex_api_auth.yml | 4 ++-- .github/workflows/opex_api_backend.yml | 4 ++-- .github/workflows/opex_api_cgn.yml | 4 ++-- .github/workflows/opex_api_cgn_operator_search.yml | 4 ++-- .github/workflows/opex_api_eucovidcert.yml | 4 ++-- .github/workflows/opex_api_fims.yml | 4 ++-- .github/workflows/opex_api_mit_voucher.yml | 4 ++-- .github/workflows/opex_api_myportal.yml | 4 ++-- .github/workflows/opex_api_notifications.yml | 4 ++-- .github/workflows/opex_api_pagopa.yml | 4 ++-- .github/workflows/opex_api_parameters.yml | 4 ++-- .github/workflows/opex_api_pn.yml | 4 ++-- .github/workflows/opex_api_public.yml | 9 ++++++--- .github/workflows/opex_api_session.yml | 4 ++-- .github/workflows/opex_api_zendesk.yml | 4 ++-- .opex/api_public/env/prod/config.yaml | 2 +- 18 files changed, 39 insertions(+), 36 deletions(-) diff --git a/.github/workflows/opex_api_api_bonus.yml b/.github/workflows/opex_api_api_bonus.yml index 3c41fc25f..244ee7277 100644 --- a/.github/workflows/opex_api_api_bonus.yml +++ b/.github/workflows/opex_api_api_bonus.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_api_bpd.yml b/.github/workflows/opex_api_api_bpd.yml index 8e452e6ff..a7c496397 100644 --- a/.github/workflows/opex_api_api_bpd.yml +++ b/.github/workflows/opex_api_api_bpd.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_auth.yml b/.github/workflows/opex_api_auth.yml index f5d800111..5c5c7e208 100644 --- a/.github/workflows/opex_api_auth.yml +++ b/.github/workflows/opex_api_auth.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_backend.yml b/.github/workflows/opex_api_backend.yml index a7d9c7784..080de1f63 100644 --- a/.github/workflows/opex_api_backend.yml +++ b/.github/workflows/opex_api_backend.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_cgn.yml b/.github/workflows/opex_api_cgn.yml index fe57f9cee..c99408b69 100644 --- a/.github/workflows/opex_api_cgn.yml +++ b/.github/workflows/opex_api_cgn.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_cgn_operator_search.yml b/.github/workflows/opex_api_cgn_operator_search.yml index d46bec6cc..c141cdee7 100644 --- a/.github/workflows/opex_api_cgn_operator_search.yml +++ b/.github/workflows/opex_api_cgn_operator_search.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_eucovidcert.yml b/.github/workflows/opex_api_eucovidcert.yml index c7f5f3839..40abd7fd6 100644 --- a/.github/workflows/opex_api_eucovidcert.yml +++ b/.github/workflows/opex_api_eucovidcert.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_fims.yml b/.github/workflows/opex_api_fims.yml index d93cbd282..91210cee8 100644 --- a/.github/workflows/opex_api_fims.yml +++ b/.github/workflows/opex_api_fims.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_mit_voucher.yml b/.github/workflows/opex_api_mit_voucher.yml index cb748a865..9e1b56dce 100644 --- a/.github/workflows/opex_api_mit_voucher.yml +++ b/.github/workflows/opex_api_mit_voucher.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_myportal.yml b/.github/workflows/opex_api_myportal.yml index 46976ccf0..6659838b3 100644 --- a/.github/workflows/opex_api_myportal.yml +++ b/.github/workflows/opex_api_myportal.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_notifications.yml b/.github/workflows/opex_api_notifications.yml index 025501a72..be09a2a00 100644 --- a/.github/workflows/opex_api_notifications.yml +++ b/.github/workflows/opex_api_notifications.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_pagopa.yml b/.github/workflows/opex_api_pagopa.yml index 83d7545c8..fa8222573 100644 --- a/.github/workflows/opex_api_pagopa.yml +++ b/.github/workflows/opex_api_pagopa.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_parameters.yml b/.github/workflows/opex_api_parameters.yml index 395330740..f0bc42ba3 100644 --- a/.github/workflows/opex_api_parameters.yml +++ b/.github/workflows/opex_api_parameters.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_pn.yml b/.github/workflows/opex_api_pn.yml index 2ef323363..f07aed314 100644 --- a/.github/workflows/opex_api_pn.yml +++ b/.github/workflows/opex_api_pn.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_public.yml b/.github/workflows/opex_api_public.yml index 6443bac78..8bcdfaf4c 100644 --- a/.github/workflows/opex_api_public.yml +++ b/.github/workflows/opex_api_public.yml @@ -5,7 +5,8 @@ on: workflow_dispatch: push: branches: - - master + - demo + # - master paths: - 'api_public.yaml' - '.github/workflows/opex_api_public.yml' @@ -22,6 +23,8 @@ on: - '.opex/api_public/**' env: + # opex-demo client_id + # CLIENT_ID: 10ab3c51-f734-4782-abe9-3e998a1a2e84 CLIENT_ID: 712582b4-1e38-4329-bfd2-5cd186e82529 TENANT_ID: 7788edaf-0346-4068-9d79-c868aed15b3d SUBSCRIPTION_ID: ec285037-c673-4f58-b594-d7c480da4e8b @@ -52,7 +55,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +64,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_session.yml b/.github/workflows/opex_api_session.yml index a7bc1c902..8d5d2183a 100644 --- a/.github/workflows/opex_api_session.yml +++ b/.github/workflows/opex_api_session.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.github/workflows/opex_api_zendesk.yml b/.github/workflows/opex_api_zendesk.yml index a9737a657..1404b78dc 100644 --- a/.github/workflows/opex_api_zendesk.yml +++ b/.github/workflows/opex_api_zendesk.yml @@ -52,7 +52,7 @@ jobs: fetch-depth: 0 # from https://github.com/pagopa/opex-dashboard-azure-action/ - - uses: pagopa/opex-dashboard-azure-action@v1.1.0 + - uses: pagopa/opex-dashboard-azure-action@v1.1.2 with: environment: ${{ matrix.environment }} api-name: ${{ env.API_NAME }} @@ -61,4 +61,4 @@ jobs: tenant-id: ${{ env.TENANT_ID }} subscription-id: ${{ env.SUBSCRIPTION_ID }} # from https://github.com/pagopa/opex-dashboard-azure-action/pkgs/container/opex-dashboard-azure-action - docker-version: sha256:7e454c1892b2aaf3717782c07a2fa01504db5cc7d07979fae863dfc00a9f0173 + docker-version: sha256:e4245954566cd3470e1b5527d33bb58ca132ce7493eac01be9e808fd25a11c8d diff --git a/.opex/api_public/env/prod/config.yaml b/.opex/api_public/env/prod/config.yaml index 95c6e7028..56ed535f5 100644 --- a/.opex/api_public/env/prod/config.yaml +++ b/.opex/api_public/env/prod/config.yaml @@ -7,7 +7,7 @@ evaluation_time_window: 30 event_occurrences: 4 # After 5*4=20 min data_source: /subscriptions/ec285037-c673-4f58-b594-d7c480da4e8b/resourceGroups/io-p-rg-external/providers/Microsoft.Network/applicationGateways/io-p-appgateway action_groups: - - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/ioperror + - /subscriptions/EC285037-C673-4F58-B594-D7C480DA4E8B/resourceGroups/io-p-rg-common/providers/microsoft.insights/actionGroups/iopquarantineerror overrides: hosts: - app-backend.io.italia.it From 1b5da7e4e81c9551261a78d68a832f36314cf2e2 Mon Sep 17 00:00:00 2001 From: gquadrati Date: Thu, 20 Jul 2023 13:39:54 +0200 Subject: [PATCH 73/73] fix api_public workflow --- .github/workflows/opex_api_public.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/opex_api_public.yml b/.github/workflows/opex_api_public.yml index 8bcdfaf4c..4c4afdb3c 100644 --- a/.github/workflows/opex_api_public.yml +++ b/.github/workflows/opex_api_public.yml @@ -5,8 +5,7 @@ on: workflow_dispatch: push: branches: - - demo - # - master + - master paths: - 'api_public.yaml' - '.github/workflows/opex_api_public.yml'