Azure Monitor Dashboard
Application Insights + Log Analytics Workspace
Azure Monitor Workbook
Set NEXT_PUBLIC_MONITOR_WORKBOOK_URL untuk embed workbook
Fraud Rate Chart
Real-time fraud event trends
Scoring Latency p50/95/99
Model inference performance
Top Blocked IPs
Malicious IP leaderboard
Cluster Detections
Graph fraud syndicate alerts
Alert Rules (Azure Monitor)
critical
Fraud Spike Alert
fraud_blocked > 50 dalam 5 menit
medium
Latency P95 Alert
scoring_latency_ms p95 > 500ms
high
Exception Rate
exception_rate > 5%
high
Graph Cluster
graph_cluster_found = true
KQL Query Samples — Log Analytics
Fraud Events (24h)
customEvents
| where timestamp > ago(24h)
| where customDimensions["fraud.event"] in (
"fraud_blocked", "fraud_stepup", "fraud_approved")
| summarize count() by
bin(timestamp, 1h),
tostring(customDimensions["fraud.event"])
| render timechartScoring Latency p95
customMetrics
| where name == "model.latency_ms"
| where timestamp > ago(1h)
| summarize
p50 = percentile(value, 50),
p95 = percentile(value, 95),
p99 = percentile(value, 99)
by bin(timestamp, 5m)
| render timechartGraph Cluster Detections
customEvents
| where timestamp > ago(7d)
| where customDimensions["fraud.event"] == "graph_cluster_found"
| summarize
clusters = count(),
avg_size = avg(toint(customDimensions["graph.cluster_size"]))
by bin(timestamp, 1d)
| render barchartException Rate
exceptions
| where timestamp > ago(1h)
| summarize error_count = count() by bin(timestamp, 5m)
| join kind=leftouter (
requests | summarize total = count() by bin(timestamp, 5m)
) on timestamp
| extend error_rate = todouble(error_count) / total * 100
| render timechart