From 2ac3eecd733f08413142a9473b943862cf8067a3 Mon Sep 17 00:00:00 2001 From: Copilot Date: Tue, 8 Sep 2026 11:22:02 +0200 Subject: [PATCH] Added the grafana dashboard json file. --- .../fraud-intelligence-grafana-dashboard.json | 1293 +++++++++++++++++ 1 file changed, 1293 insertions(+) create mode 100644 03-Azure/01-04-AI/07_Fraud_Intelligence/walkthrough/challenge-06/grafana/fraud-intelligence-grafana-dashboard.json diff --git a/03-Azure/01-04-AI/07_Fraud_Intelligence/walkthrough/challenge-06/grafana/fraud-intelligence-grafana-dashboard.json b/03-Azure/01-04-AI/07_Fraud_Intelligence/walkthrough/challenge-06/grafana/fraud-intelligence-grafana-dashboard.json new file mode 100644 index 000000000..fde570441 --- /dev/null +++ b/03-Azure/01-04-AI/07_Fraud_Intelligence/walkthrough/challenge-06/grafana/fraud-intelligence-grafana-dashboard.json @@ -0,0 +1,1293 @@ +{ + "__inputs": [ + { + "name": "DS_AZURE_MONITOR", + "label": "Azure Monitor", + "description": "", + "type": "datasource", + "pluginId": "grafana-azure-monitor-datasource", + "pluginName": "Azure Monitor" + } + ], + "__elements": {}, + "__requires": [ + { + "type": "panel", + "id": "barchart", + "name": "Bar chart", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "12.4.3" + }, + { + "type": "datasource", + "id": "grafana-azure-monitor-datasource", + "name": "Azure Monitor", + "version": "12.4.3" + }, + { + "type": "panel", + "id": "piechart", + "name": "Pie chart", + "version": "" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "table", + "name": "Table", + "version": "" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "Business observability for the Fraud Intelligence Agent Framework workflow. Uses custom OpenTelemetry metrics exported to Application Insights.", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "links": [], + "panels": [ + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Headline workflow totals in the selected time range.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + } + ] + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Extraction Failures" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 4, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name startswith \"fraud.\"\n| summarize ['Transactions Processed'] = sumif(valueSum, name == \"fraud.transactions.processed\"), ['Classifications'] = sumif(valueSum, name == \"fraud.workflow.classifications\"), ['Alerts'] = sumif(valueSum, name == \"fraud.alert.status\"), ['Extraction Failures'] = sumif(valueSum, name == \"fraud.metrics.extraction_failures\")", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "time_series" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Workflow Summary", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 100, + "panels": [], + "title": "Transaction Monitoring", + "type": "row" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Processed transaction throughput split by currency.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "bars", + "fillOpacity": 45, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 5 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "desc" + } + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.transactions.processed\"\n| extend Currency = tostring(customDimensions[\"currency\"])\n| summarize Transactions = sum(valueSum) by Currency, bin(timestamp, $interval)\n| order by timestamp asc", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "time_series", + "timeColumn": "timestamp" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Transactions by Currency", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Transaction count by cross-border and historical-risk flags.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1, + "scaleDistribution": { + "type": "linear" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 12, + "y": 5 + }, + "id": 3, + "options": { + "barRadius": 0, + "barWidth": 0.9, + "fullHighlight": false, + "groupWidth": 0.7, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none", + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + }, + "xTickLabelRotation": 0, + "xTickLabelSpacing": 0 + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.transactions.processed\"\n| extend CrossBorder = tostring(customDimensions[\"cross_border\"]), HistoryDetected = tostring(customDimensions[\"history_detected\"])\n| summarize Transactions = sum(valueSum) by CrossBorder, HistoryDetected\n| extend Segment = strcat(\"Cross-border: \", CrossBorder, \" / History: \", HistoryDetected)\n| project Segment, Transactions", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Cross-border Volume", + "type": "barchart" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Amount statistics in each original transaction currency; currencies are not converted.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "footer": { + "reducers": [] + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 5 + }, + "id": 4, + "options": { + "cellHeight": "sm", + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "12.4.3", + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.transaction.amount\"\n| extend Currency = tostring(customDimensions[\"currency\"])\n| summarize Total = sum(valueSum), Average = sum(valueSum) / sum(valueCount), Minimum = min(valueMin), Maximum = max(valueMax), Transactions = sum(valueCount) by Currency", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Transaction Amounts", + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 13 + }, + "id": 101, + "panels": [], + "title": "AML Evidence", + "type": "row" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Average historical context level and evidence count by account role.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 14 + }, + "id": 5, + "options": { + "barRadius": 0, + "barWidth": 0.9, + "groupWidth": 0.7, + "legend": { + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "none" + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name in (\"fraud.aml.historical_context_level\", \"fraud.aml.evidence_count\")\n| extend AccountRole = tostring(customDimensions[\"account_role\"])\n| summarize Average = sum(valueSum) / sum(valueCount) by name, AccountRole\n| extend Metric = iff(name endswith \"historical_context_level\", \"Historical context\", \"Evidence count\")\n| project AccountRole, Metric, Average", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Account Enrichment", + "type": "barchart" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Detected AML pattern types.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 14 + }, + "id": 6, + "options": { + "barRadius": 0, + "barWidth": 0.9, + "groupWidth": 0.7, + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "orientation": "horizontal", + "showValue": "always", + "stacking": "none" + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.aml.typology_detected\"\n| extend PatternType = tostring(customDimensions[\"pattern_type\"])\n| summarize Detections = sum(valueSum) by PatternType\n| order by Detections desc", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "AML Typologies", + "type": "barchart" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 102, + "panels": [], + "title": "Regulatory Assessment", + "type": "row" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Regulatory rules grouped by scope and compliance status.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 23 + }, + "id": 7, + "options": { + "barRadius": 0, + "barWidth": 0.9, + "groupWidth": 0.7, + "legend": { + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "normal" + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.regulatory.rules_evaluated\"\n| extend Status = tostring(customDimensions[\"status\"]), Scope = tostring(customDimensions[\"scope\"])\n| summarize Rules = sum(valueSum) by Scope, Status", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Rule Compliance", + "type": "barchart" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Average missing regulatory fields by overall status.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "continuous-GrYlRd" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 12, + "y": 23 + }, + "id": 8, + "options": { + "barRadius": 0, + "barWidth": 0.9, + "groupWidth": 0.7, + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "orientation": "auto", + "showValue": "always", + "stacking": "none" + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.regulatory.missing_data_count\"\n| extend OverallStatus = tostring(customDimensions[\"overall_status\"])\n| summarize AverageMissingFields = sum(valueSum) / sum(valueCount) by OverallStatus", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Missing Regulatory Data", + "type": "barchart" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Assessment volume and average investigation score by priority band.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 23 + }, + "id": 9, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.investigation.priority_score\"\n| extend PriorityBand = tostring(customDimensions[\"priority_band\"])\n| summarize Assessments = sum(valueCount), AverageScore = sum(valueSum) / sum(valueCount), MaximumScore = max(valueMax) by PriorityBand", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Investigation Priority", + "type": "table" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 31 + }, + "id": 103, + "panels": [], + "title": "Workflow Decisions and Alerts", + "type": "row" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Final workflow verdicts split by priority and regulatory status.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 32 + }, + "id": 10, + "options": { + "barRadius": 0, + "barWidth": 0.9, + "groupWidth": 0.7, + "legend": { + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "orientation": "auto", + "showValue": "auto", + "stacking": "normal" + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.workflow.classifications\"\n| extend Verdict = tostring(customDimensions[\"verdict\"]), PriorityBand = tostring(customDimensions[\"priority_band\"]), OverallStatus = tostring(customDimensions[\"overall_status\"])\n| summarize Transactions = sum(valueSum) by Verdict, PriorityBand, OverallStatus", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Workflow Classifications", + "type": "barchart" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Share of assessments requiring case recommendation review.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 12, + "y": 32 + }, + "id": 11, + "options": { + "displayLabels": [ + "name", + "percent" + ], + "legend": { + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "values": [ + "value" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [], + "fields": "", + "values": true + } + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.workflow.review_required\"\n| extend Required = tostring(customDimensions[\"required\"])\n| summarize Transactions = sum(valueSum) by Required", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Review Required", + "type": "piechart" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Alert outcomes, threshold decisions, and MCP invocation status.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 32 + }, + "id": 12, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.alert.status\"\n| extend Status = tostring(customDimensions[\"status\"]), ThresholdStatus = tostring(customDimensions[\"threshold_status\"]), McpInvoked = tostring(customDimensions[\"mcp_invoked\"])\n| summarize Alerts = sum(valueSum) by Status, ThresholdStatus, McpInvoked", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Alert Status", + "type": "table" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Alert creation trend split by status.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "drawStyle": "bars", + "fillOpacity": 50, + "lineWidth": 1, + "showPoints": "never", + "stacking": { + "group": "A", + "mode": "normal" + } + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 40 + }, + "id": 13, + "options": { + "legend": { + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.alert.status\"\n| extend Status = tostring(customDimensions[\"status\"])\n| summarize Alerts = sum(valueSum) by Status, bin(timestamp, $interval)\n| order by timestamp asc", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "time_series", + "timeColumn": "timestamp" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Alert Timeline", + "type": "timeseries" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Business metric extraction failures by workflow observer stage.", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "red", + "mode": "fixed" + }, + "custom": { + "drawStyle": "bars", + "fillOpacity": 55, + "lineWidth": 1, + "showPoints": "never", + "stacking": { + "group": "A", + "mode": "normal" + } + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 40 + }, + "id": 14, + "options": { + "legend": { + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name == \"fraud.metrics.extraction_failures\"\n| extend Stage = tostring(customDimensions[\"stage\"])\n| summarize Failures = sum(valueSum) by Stage, bin(timestamp, $interval)\n| order by timestamp asc", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "time_series", + "timeColumn": "timestamp" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Metric Extraction Failures", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 48 + }, + "id": 104, + "panels": [], + "title": "Telemetry Diagnostics", + "type": "row" + }, + { + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "description": "Ingestion volume and most recent sample for every Fraud Intelligence metric.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 15, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": true, + "fields": "", + "reducer": [ + "sum" + ], + "show": true + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Metric" + } + ] + }, + "targets": [ + { + "azureLogAnalytics": { + "dashboardTime": true, + "query": "customMetrics\n| where name startswith \"fraud.\"\n| summarize Samples = count(), Value = sum(valueSum), LastSeen = max(timestamp) by Metric = name\n| order by Metric asc", + "resources": [ + "$applicationInsightsResourceId" + ], + "resultFormat": "table", + "timeColumn": "timestamp" + }, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "queryType": "Azure Log Analytics", + "refId": "A" + } + ], + "title": "Metric Ingestion Health", + "type": "table" + } + ], + "preload": false, + "refresh": "5m", + "schemaVersion": 42, + "tags": [ + "agent-framework", + "fraud-intelligence", + "application-insights" + ], + "templating": { + "list": [ + { + "current": {}, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "definition": "", + "description": "Subscription containing the Application Insights resource.", + "includeAll": false, + "label": "Subscription", + "name": "subscriptionId", + "options": [], + "query": { + "grafanaTemplateVariableFn": { + "kind": "SubscriptionsQuery", + "rawQuery": "subscriptions()" + }, + "queryType": "Azure Subscriptions", + "refId": "A" + }, + "refresh": 1, + "regex": "", + "regexApplyTo": "value", + "sort": 5, + "type": "query" + }, + { + "current": {}, + "datasource": { + "type": "grafana-azure-monitor-datasource", + "uid": "${DS_AZURE_MONITOR}" + }, + "definition": "", + "description": "Application Insights resource queried by all panels.", + "includeAll": false, + "label": "Application Insights", + "name": "applicationInsightsResourceId", + "options": [], + "query": { + "azureLogAnalytics": { + "query": "", + "resources": [] + }, + "azureResourceGraph": { + "query": "resources\n| where type =~ \"microsoft.insights/components\"\n| distinct id" + }, + "queryType": "Azure Resource Graph", + "refId": "A", + "subscriptions": [ + "$subscriptionId" + ] + }, + "refresh": 1, + "regex": "", + "regexApplyTo": "value", + "sort": 5, + "type": "query" + }, + { + "auto": true, + "auto_count": 30, + "auto_min": "1m", + "current": { + "text": "$__auto", + "value": "$__auto" + }, + "description": "Time interval for metric aggregation.", + "label": "Interval", + "name": "interval", + "options": [ + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "15m", + "value": "15m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "5m,15m,1h,6h,1d", + "refresh": 2, + "type": "interval" + } + ] + }, + "time": { + "from": "now-24h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Dashboard-08-25-2026-09-35", + "uid": "subscriptions~0c2b616d-05ea-49f8-b176-e2e06149c164~resourceGroups~fraud-intelligence-wip-rg~providers~Microsoft.Dashboard~dashboards~Dashboard-08-25-2026-09-35", + "version": 2, + "weekStart": "" +} \ No newline at end of file