From 60b4e95d15de82234825fa96c52e73877c4bb0cf Mon Sep 17 00:00:00 2001 From: jcolladokuri Date: Tue, 19 Oct 2021 06:06:38 -0700 Subject: [PATCH] Azure Monitor: Add new starter dashboards (#39876) * Adding more starter dashboards for Azure Monitor data source * modified dashboard format to match grafana 3.1+ for panel datasource variable templating * Minor fix to dashboard config * Getting rid of individual links to dropdown and adding dropdown * Minor config changes * Readding dashboard linking and * Renamed dashboards, added descriptios and exported them properly for external sharing --- .../dashboards/alertRules.json | 425 +++++++++ .../dashboards/v1Alerts.json | 573 ++++++++++++ .../dashboards/v1AlertsAtScale.json | 832 ++++++++++++++++++ .../plugin.json | 5 +- 4 files changed, 1834 insertions(+), 1 deletion(-) create mode 100644 public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/alertRules.json create mode 100644 public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1Alerts.json create mode 100644 public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1AlertsAtScale.json diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/alertRules.json b/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/alertRules.json new file mode 100644 index 00000000000..e63cc56c07f --- /dev/null +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/alertRules.json @@ -0,0 +1,425 @@ +{ + "__inputs": [ + { + "name": "DS_AZURE_MONITOR", + "label": "Azure Monitor", + "description": "", + "type": "datasource", + "pluginId": "grafana-azure-monitor-datasource", + "pluginName": "Azure Monitor" + } + ], + "__elements": [], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.3.0-pre" + }, + { + "type": "datasource", + "id": "grafana-azure-monitor-datasource", + "name": "Azure Monitor", + "version": "0.3.0" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "A summary of all alert rules for the subscription selected and following filters.", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "iteration": 1634314043696, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "${DS_AZURE_MONITOR}", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Status" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "Disabled": { + "color": "red", + "index": 1 + }, + "Enabled": { + "color": "green", + "index": 0 + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-background" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Name" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "https://ms.portal.azure.com/#blade/Microsoft_Azure_Monitoring/UpdateVNextAlertRuleBlade/ruleInputs/%7B%22alertId%22%3A%22%2Fsubscriptions%2F${sub}%2FresourceGroups%2F${rg}%2Fproviders%2Fmicrosoft.alertsmanagement%2F${__data.fields[\"Signal type\"]}%2F${__data.fields.Name}%22%7D" + } + ] + }, + { + "id": "color", + "value": { + "fixedColor": "blue", + "mode": "fixed" + } + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Target resource" + }, + "properties": [ + { + "id": "custom.width", + "value": null + } + ] + } + ] + }, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "footer": { + "fields": "", + "reducer": ["sum"], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.0-pre", + "targets": [ + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n //the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.alertsmanagement/smartdetectoralertrules\"\r\n| parse properties.scope with * 'components/' targetResource '\"' *\r\n| parse type with * 'microsoft.alertsmanagement/' signalType \r\n| parse properties.detector.supportedResourceTypes with * '[\"' resourceType '\"]' *\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg) and signalType in ($sig_type)\r\nand properties.state in ($stat)\r\n| project name, tostring(properties.state), targetResource, tostring(properties.detector.supportedResourceTypes[0]), signalType\r\n", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "Smart detector alert rules", + "subscription": "", + "subscriptions": ["$sub"] + }, + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.alertsmanagement/resourcehealthalertrules\"\r\n| parse properties.scope with * 'components/' targetResource '\"' *\r\n| parse type with * 'microsoft.alertsmanagement/' signalType \r\n| parse properties.detector.supportedResourceTypes with * '[\"' resourceType '\"]' *\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg) and signalType in ($sig_type)\r\nand properties.state in ($stat)\r\n| project name, tostring(properties.state), targetResource, tostring(properties.detector.supportedResourceTypes[0]), signalType\r\n", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "Resource health alert rules", + "subscription": "", + "subscriptions": ["$sub"] + }, + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.insights/alertrules\"\r\n| parse properties.scope with * 'components/' targetResource '\"' *\r\n| parse type with * 'microsoft.insights/' signalType \r\n| parse properties.detector.supportedResourceTypes with * '[\"' resourceType '\"]' *\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg) and signalType in ($sig_type)\r\nand properties.state in ($stat)\r\n| project name, tostring(properties.state), targetResource, tostring(properties.detector.supportedResourceTypes[0]), signalType\r\n", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "A", + "subscription": "", + "subscriptions": ["$sub"] + } + ], + "title": "Alert rules", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "indexByName": {}, + "renameByName": { + "name": "Name", + "properties_detector_supportedResourceTypes_0": "Resource type", + "properties_state": "Status", + "resourceTypes": "Target resource type", + "signalType": "Signal type", + "targetResource": "Target resource", + "type": "Signal type" + } + } + } + ], + "transparent": true, + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 31, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_AZURE_MONITOR}", + "definition": "Subscriptions()", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Subscription", + "multi": false, + "name": "sub", + "options": [], + "query": "Subscriptions()", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_AZURE_MONITOR}", + "definition": "ResourceGroups($sub)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Resource Group", + "multi": true, + "name": "rg", + "options": [], + "query": "ResourceGroups($sub)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": { + "selected": true, + "text": ["Smart detector", "Resource health"], + "value": ["smartdetectoralertrules", "resourcehealth"] + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Signal type", + "multi": true, + "name": "sig_type", + "options": [ + { + "selected": true, + "text": "Smart detector", + "value": "smartdetectoralertrules" + }, + { + "selected": true, + "text": "Resource health", + "value": "resourcehealth" + } + ], + "query": "Smart detector : smartdetectoralertrules, Resource health : resourcehealth", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": ["Enabled", "Disabled"], + "value": ["Enabled", "Disabled"] + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Status", + "multi": true, + "name": "stat", + "options": [ + { + "selected": true, + "text": "Enabled", + "value": "Enabled" + }, + { + "selected": true, + "text": "Disabled", + "value": "Disabled" + } + ], + "query": "Enabled, Disabled", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": { + "hidden": true + }, + "timezone": "", + "title": "Azure Alert Rules Overview", + "uid": "Pxwf9wN7k", + "version": 1 +} diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1Alerts.json b/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1Alerts.json new file mode 100644 index 00000000000..bea932e18ae --- /dev/null +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1Alerts.json @@ -0,0 +1,573 @@ +{ + "__inputs": [ + { + "name": "DS_AZURE_MONITOR", + "label": "Azure Monitor", + "description": "", + "type": "datasource", + "pluginId": "grafana-azure-monitor-datasource", + "pluginName": "Azure Monitor" + } + ], + "__elements": [], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.3.0-pre" + }, + { + "type": "datasource", + "id": "grafana-azure-monitor-datasource", + "name": "Azure Monitor", + "version": "0.3.0" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "A summary of all alerts for the subscription and other filters selected", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "iteration": 1634314135767, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "${DS_AZURE_MONITOR}", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-BlYlRd" + }, + "custom": { + "align": "center", + "displayMode": "auto", + "filterable": true + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80.0002 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "properties_essentials_severity" + }, + "properties": [ + { + "id": "mappings", + "value": [ + { + "options": { + "\"Sev0\"": { + "color": "red", + "index": 4, + "text": "0 - Critical" + }, + "\"Sev1\"": { + "color": "orange", + "index": 3, + "text": "1 - Error" + }, + "\"Sev2\"": { + "color": "yellow", + "index": 2, + "text": "2 - Warning" + }, + "\"Sev3\"": { + "color": "blue", + "index": 1, + "text": "3 - Informational" + }, + "\"Sev4\"": { + "color": "#8F3BB8", + "index": 0, + "text": "4 - Verbose" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-background-solid" + }, + { + "id": "displayName", + "value": "Severity" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "name" + }, + "properties": [ + { + "id": "displayName", + "value": "Name" + }, + { + "id": "custom.displayMode", + "value": "color-text" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "test title", + "url": "https://ms.portal.azure.com/#blade/Microsoft_Azure_Monitoring/AlertDetailsTemplateBlade/alertId/%2Fsubscriptions%2F${sub}%2Fresourcegroups%2F${rg}%2Fproviders%2Fmicrosoft.insights%2Fcomponents%2F${res}%2Fproviders%2FMicrosoft.AlertsManagement%2Falerts%2F${__data.fields.alertId}" + } + ] + }, + { + "id": "mappings", + "value": [] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "properties_essentials_monitorCondition" + }, + "properties": [ + { + "id": "displayName", + "value": "Monitor condition" + }, + { + "id": "mappings", + "value": [ + { + "options": { + "Fired": { + "color": "orange", + "index": 1 + }, + "Resolved": { + "color": "green", + "index": 0 + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "properties_essentials_alertState" + }, + "properties": [ + { + "id": "displayName", + "value": "Alert state" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "properties_essentials_targetResourceName" + }, + "properties": [ + { + "id": "displayName", + "value": "Affected resource" + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "properties_essentials_monitorService" + }, + "properties": [ + { + "id": "displayName", + "value": "Monitor service" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "properties_essentials_signalType" + }, + "properties": [ + { + "id": "displayName", + "value": "Signal type" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "properties_essentials_lastModifiedDateTime" + }, + "properties": [ + { + "id": "displayName", + "value": "Fired time" + }, + { + "id": "unit", + "value": "dateTimeAsUS" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "SubName" + }, + "properties": [ + { + "id": "displayName", + "value": "Subscription name" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 423 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Subscription name" + }, + "properties": [ + { + "id": "custom.width", + "value": 266 + } + ] + } + ] + }, + "gridPos": { + "h": 16, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "links": [], + "options": { + "footer": { + "fields": "", + "reducer": ["sum"], + "show": false + }, + "frameIndex": 0, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "8.3.0-pre", + "targets": [ + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "alertsmanagementresources\r\n| join kind=leftouter (ResourceContainers | where type=='microsoft.resources/subscriptions' | project SubName=name, subscriptionId) on subscriptionId\r\n| where type == \"microsoft.alertsmanagement/alerts\"\r\n| where subscriptionId == \"$sub\" and properties.essentials.targetResourceGroup in ($rg) and properties.essentials.monitorCondition in ($mc)\r\nand properties.essentials.alertState in ($as) and properties.essentials.severity in ($sev)\r\nand todatetime(properties.essentials.lastModifiedDateTime) >= $__timeFrom and todatetime(properties.essentials.lastModifiedDateTime) <= $__timeTo\r\n| parse id with * \"alerts/\" alertId\r\n| project name, properties.essentials.severity, tostring(properties.essentials.monitorCondition), \r\ntostring(properties.essentials.alertState), tostring(properties.essentials.targetResourceName),\r\n tostring(properties.essentials.monitorService), tostring(properties.essentials.signalType),\r\n todatetime(properties.essentials.lastModifiedDateTime), tostring(SubName), alertId, id\r\n", + "resultFormat": "table" + }, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "A", + "subscription": "", + "subscriptions": [] + } + ], + "title": "V1 Alerts", + "transformations": [ + { + "id": "filterFieldsByName", + "options": { + "include": { + "names": [ + "alertId", + "name", + "properties_essentials_severity", + "properties_essentials_monitorCondition", + "properties_essentials_alertState", + "properties_essentials_targetResourceName", + "properties_essentials_monitorService", + "properties_essentials_signalType", + "properties_essentials_lastModifiedDateTime", + "SubName" + ] + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "alertId": false + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "transparent": true, + "type": "table" + } + ], + "refresh": "", + "schemaVersion": 31, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_AZURE_MONITOR}", + "definition": "subscriptions()", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Subscription", + "multi": false, + "name": "sub", + "options": [], + "query": "subscriptions()", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_AZURE_MONITOR}", + "definition": "ResourceGroups($sub)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Resource group", + "multi": true, + "name": "rg", + "options": [], + "query": "ResourceGroups($sub)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": ["Fired", "Resolved"], + "value": ["Fired", "Resolved"] + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Monitor Condition", + "multi": true, + "name": "mc", + "options": [ + { + "selected": true, + "text": "Fired", + "value": "Fired" + }, + { + "selected": true, + "text": "Resolved", + "value": "Resolved" + } + ], + "query": "Fired, Resolved", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": ["New", "Acknowledged", "Closed"], + "value": ["New", "Acknowledged", "Closed"] + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Alert State", + "multi": true, + "name": "as", + "options": [ + { + "selected": true, + "text": "New", + "value": "New" + }, + { + "selected": true, + "text": "Acknowledged", + "value": "Acknowledged" + }, + { + "selected": true, + "text": "Closed", + "value": "Closed" + } + ], + "query": "New, Acknowledged, Closed", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + }, + { + "allValue": null, + "current": { + "selected": false, + "text": ["1 - Error", "0 - Critical", "2 - Warning", "3 - Informational", "4 - Verbose"], + "value": ["Sev1", "Sev0", "Sev2", "Sev3", "Sev4"] + }, + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Severity", + "multi": true, + "name": "sev", + "options": [ + { + "selected": true, + "text": "0 - Critical", + "value": "Sev0" + }, + { + "selected": true, + "text": "1 - Error", + "value": "Sev1" + }, + { + "selected": true, + "text": "2 - Warning", + "value": "Sev2" + }, + { + "selected": true, + "text": "3 - Informational", + "value": "Sev3" + }, + { + "selected": true, + "text": "4 - Verbose", + "value": "Sev4" + } + ], + "query": "0 - Critical : Sev0, 1 - Error : Sev1, 2 - Warning : Sev2, 3 - Informational : Sev3, 4 - Verbose : Sev4", + "queryValue": "", + "skipUrlSync": false, + "type": "custom" + } + ] + }, + "time": { + "from": "now-30d", + "to": "now" + }, + "timepicker": { + "hidden": false, + "refresh_intervals": ["30m", "1h", "12h", "24h", "3d", "7d", "30d"] + }, + "timezone": "", + "title": "Azure Alert Consumption", + "uid": "5DLst5N7k", + "version": 1 +} diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1AlertsAtScale.json b/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1AlertsAtScale.json new file mode 100644 index 00000000000..ae3b7ce0571 --- /dev/null +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/dashboards/v1AlertsAtScale.json @@ -0,0 +1,832 @@ +{ + "__inputs": [ + { + "name": "DS_AZURE_MONITOR", + "label": "Azure Monitor", + "description": "", + "type": "datasource", + "pluginId": "grafana-azure-monitor-datasource", + "pluginName": "Azure Monitor" + } + ], + "__elements": [], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.3.0-pre" + }, + { + "type": "datasource", + "id": "grafana-azure-monitor-datasource", + "name": "Azure Monitor", + "version": "0.3.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "description": "A summary of alerts per severity with an overall count of total alerts, alert rules and action rules", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "iteration": 1634313967579, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": "${DS_AZURE_MONITOR}", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "count_" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "d/5DLst5N7k/alert-consumption?${sub:queryparam}&${rg:queryparam}&${__url_time_range}&var-mc=Fired&var-mc=Resolved&var-as=New&var-as=Acknowledged&var-as=Closed&var-sev=Sev0&var-sev=Sev1&var-sev=Sev2&var-sev=Sev3&var-sev=Sev4&${__url_time_range}" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 2, + "x": 0, + "y": 0 + }, + "id": 4, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.3.0-pre", + "targets": [ + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "alertsmanagementresources\r\n| where type == \"microsoft.alertsmanagement/alerts\"\r\n| where todatetime(properties.essentials.lastModifiedDateTime) >= $__timeFrom and todatetime(properties.essentials.lastModifiedDateTime) <= $__timeTo\r\n| where subscriptionId == \"$sub\" and properties.essentials.targetResourceGroup in ($rg)\r\n| summarize count()", + "resultFormat": "table" + }, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "A", + "subscription": "", + "subscriptions": ["$sub"] + } + ], + "title": "Total alerts", + "type": "stat" + }, + { + "datasource": "${DS_AZURE_MONITOR}", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Total" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "d/Pxwf9wN7k/alert-rules-overview?${sub:queryparam}&${rg:queryparam}&var-sig_type=smartdetectoralertrules&var-sig_type=resourcehealth&var-stat=Enabled&var-stat=Disabled" + } + ] + } + ] + } + ] + }, + "gridPos": { + "h": 5, + "w": 2, + "x": 2, + "y": 0 + }, + "id": 6, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.3.0-pre", + "targets": [ + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.alertsmanagement/smartdetectoralertrules\"\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg)\r\n| summarize count()", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "Smart detector rules", + "subscription": "", + "subscriptions": ["$sub"] + }, + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.alertsmanagement/resourcehealthalertrules\"\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg)\r\n| summarize count()", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "Resource health alert rules", + "subscription": "", + "subscriptions": ["$sub"] + }, + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.insights/alertrules\"\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg)\r\n| summarize count()", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "Insights alert rules", + "subscription": "", + "subscriptions": ["$sub"] + }, + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.insights/metricalerts\"\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg)\r\n| summarize count()", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "Metrics alert rules", + "subscription": "", + "subscriptions": ["$sub"] + }, + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.insights/activitylogalerts\"\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg)\r\n| summarize count()", + "resultFormat": "table" + }, + "hide": false, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "Log alert rules", + "subscription": "", + "subscriptions": ["$sub"] + } + ], + "title": "Total alert rules", + "transformations": [ + { + "id": "concatenate", + "options": {} + }, + { + "id": "calculateField", + "options": { + "mode": "reduceRow", + "reduce": { + "include": [], + "reducer": "sum" + } + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "count_ 1": true, + "count_ 2": true, + "count_ 3": true, + "count_ 4": true, + "count_ 5": true + }, + "indexByName": {}, + "renameByName": {} + } + } + ], + "type": "stat" + }, + { + "datasource": "${DS_AZURE_MONITOR}", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 2, + "x": 4, + "y": 0 + }, + "id": 8, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.3.0-pre", + "targets": [ + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "resources\r\n| where type == \"microsoft.alertsmanagement/actionrules\"\r\n| parse properties.scope with * 'components/' targetResource '\"' *\r\n| where subscriptionId == \"$sub\" and resourceGroup in ($rg)\r\n| summarize count()", + "resultFormat": "table" + }, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "A", + "subscription": "", + "subscriptions": ["$sub"] + } + ], + "title": "Action rules", + "type": "stat" + }, + { + "datasource": "${DS_AZURE_MONITOR}", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "custom": { + "align": "left", + "displayMode": "auto", + "filterable": true + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "properties_essentials_severity" + }, + "properties": [ + { + "id": "displayName", + "value": "Severity" + }, + { + "id": "mappings", + "value": [ + { + "options": { + "Sev0": { + "color": "red", + "index": 0, + "text": "0 - Critical" + }, + "Sev1": { + "color": "orange", + "index": 1, + "text": "1 - Error" + }, + "Sev2": { + "color": "yellow", + "index": 2, + "text": "2 - Warning" + }, + "Sev3": { + "color": "blue", + "index": 3, + "text": "3 - Informational" + }, + "Sev4": { + "color": "purple", + "index": 4, + "text": "4 - Verbose" + } + }, + "type": "value" + } + ] + }, + { + "id": "custom.displayMode", + "value": "color-text" + }, + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "", + "url": "d/5DLst5N7k/alert-consumption?${sub:queryparam}&${rg:queryparam}&${__url_time_range}&var-mc=Fired&var-mc=Resolved&var-as=New&var-as=Acknowledged&var-as=Closed&var-sev=${__data.fields.properties_essentials_severity}&${__url_time_range}" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "total" + }, + "properties": [ + { + "id": "displayName", + "value": "Total alerts" + }, + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "mcFired" + }, + "properties": [ + { + "id": "displayName", + "value": "Fired" + }, + { + "id": "color", + "value": { + "fixedColor": "orange", + "mode": "fixed" + } + }, + { + "id": "custom.displayMode", + "value": "gradient-gauge" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "mcResolved" + }, + "properties": [ + { + "id": "displayName", + "value": "Resolved" + }, + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + }, + { + "id": "custom.displayMode", + "value": "basic" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "asNew" + }, + "properties": [ + { + "id": "displayName", + "value": "New" + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "asAcknowledged" + }, + "properties": [ + { + "id": "displayName", + "value": "Acknowledged" + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "asClosed" + }, + "properties": [ + { + "id": "displayName", + "value": "Closed" + }, + { + "id": "custom.displayMode", + "value": "color-text" + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 5 + }, + "id": 2, + "options": { + "footer": { + "fields": "", + "reducer": ["sum"], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Severity" + } + ] + }, + "pluginVersion": "8.3.0-pre", + "targets": [ + { + "appInsights": { + "dimension": [], + "metricName": "select", + "timeGrain": "auto" + }, + "azureLogAnalytics": { + "query": "//change this example to create your own time series query\n
//the table to query (e.g. Usage, Heartbeat, Perf)\n| where $__timeFilter(TimeGenerated) //this is a macro used to show the full chart’s time range, choose the datetime column here\n| summarize count() by , bin(TimeGenerated, $__interval) //change “group by column” to a column in your table, such as “Computer”. The $__interval macro is used to auto-select the time grain. Can also use 1h, 5m etc.\n| order by TimeGenerated asc", + "resultFormat": "time_series" + }, + "azureMonitor": { + "aggOptions": [], + "dimensionFilter": "*", + "dimensionFilters": [], + "timeGrain": "auto", + "timeGrains": [], + "top": "10" + }, + "azureResourceGraph": { + "query": "alertsmanagementresources\r\n| where type == \"microsoft.alertsmanagement/alerts\"\r\n| where todatetime(properties.essentials.lastModifiedDateTime) >= $__timeFrom and todatetime(properties.essentials.lastModifiedDateTime) <= $__timeTo\r\n| where subscriptionId == \"$sub\" and properties.essentials.targetResourceGroup in ($rg)\r\n| summarize total = count(),\r\n mcFired = countif(properties.essentials.monitorCondition == \"Fired\"),\r\n mcResolved = countif(properties.essentials.monitorCondition == \"Resolved\"),\r\n asNew = countif(properties.essentials.alertState == \"New\"),\r\n asAcknowledged = countif(properties.essentials.alertState == \"Acknowledged\"),\r\n asClosed = countif(properties.essentials.alertState == \"Closed\")\r\nby tostring(properties.essentials.severity)", + "resultFormat": "table" + }, + "insightsAnalytics": { + "query": "", + "resultFormat": "time_series" + }, + "queryType": "Azure Resource Graph", + "refId": "A", + "subscription": "", + "subscriptions": ["$sub"] + } + ], + "title": "Alerts by Severity", + "transformations": [], + "transparent": true, + "type": "table" + } + ], + "schemaVersion": 31, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_AZURE_MONITOR}", + "definition": "Subscriptions()", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Subscription", + "multi": false, + "name": "sub", + "options": [], + "query": "Subscriptions()", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_AZURE_MONITOR}", + "definition": "ResourceGroups($sub)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": "Resource Group", + "multi": true, + "name": "rg", + "options": [], + "query": "ResourceGroups($sub)", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-30d", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Azure Alert Consumption At Scale", + "uid": "hcsp8ND7k", + "version": 1 +} diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json b/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json index 946f1007606..85dcf4c3118 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json @@ -9,7 +9,10 @@ { "type": "dashboard", "name": "Azure Monitor Key Vault Insights", "path": "dashboards/keyvault.json" }, { "type": "dashboard", "name": "Azure SQL Database Insights", "path": "dashboards/sqldb.json" }, { "type": "dashboard", "name": "Azure Data Explorer Insights", "path": "dashboards/adx.json" }, - { "type": "dashboard", "name": "Azure Resource Overview", "path": "dashboards/arg.json" } + { "type": "dashboard", "name": "Azure Resource Overview", "path": "dashboards/arg.json" }, + { "type": "dashboard", "name": "Azure Alert Consumption", "path": "dashboards/v1Alerts.json" }, + { "type": "dashboard", "name": "Azure Alert Rules", "path": "dashboards/alertRules.json" }, + { "type": "dashboard", "name": "Azure Alert Consumption Overview", "path": "dashboards/v1AlertsAtScale.json" } ], "info": {