feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command
Add /ultraresearch-local for structured research combining local codebase analysis with external knowledge via parallel agent swarms. Produces research briefs with triangulation, confidence ratings, and source quality assessment. New command: /ultraresearch-local with modes --quick, --local, --external, --fg. New agents: research-orchestrator (opus), docs-researcher, community-researcher, security-researcher, contrarian-researcher, gemini-bridge (all sonnet). New template: research-brief-template.md. Integration: --research flag in /ultraplan-local accepts pre-built research briefs (up to 3), enriches the interview and exploration phases. Planning orchestrator cross-references brief findings during synthesis. Design principle: Context Engineering — right information to right agent at right time. Research briefs are structured artifacts in the pipeline: ultraresearch → brief → ultraplan --research → plan → ultraexecute. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
baa2d0220b
488 changed files with 213221 additions and 0 deletions
|
|
@ -0,0 +1,506 @@
|
|||
# Anomaly Detection for AI Systems
|
||||
|
||||
**Dato:** 5. februar 2026
|
||||
**Kategori:** Monitoring & Observability
|
||||
**Målgruppe:** AI-arkitekter, DevOps-team, MLOps-ingeniører
|
||||
|
||||
## Oversikt
|
||||
|
||||
Anomaly detection er kritisk for proaktiv overvåking av AI-systemer. Microsoft Azure tilbyr flere mekanismer for å oppdage avvikende oppførsel i AI-applikasjoner, fra innebygde ML-baserte funksjoner til dedikerte tjenester. Effektiv anomaly detection reduserer tiden fra et problem oppstår til det blir oppdaget (dwell time) og muliggjør raskere respons på trusler og systemfeil.
|
||||
|
||||
## Smart Detection Capabilities
|
||||
|
||||
### Application Insights Smart Detection
|
||||
|
||||
Application Insights inkluderer automatisk smart detection som bruker maskinlæring til å oppdage avvik uten konfigurasjon. Systemet analyserer telemetri kontinuerlig og varsler automatisk ved potensielle problemer.
|
||||
|
||||
**Hovedfunksjoner:**
|
||||
|
||||
1. **Failure Anomalies Detection**
|
||||
- Oppdager unormal økning i feilrate
|
||||
- Korrelerer feilrater med last og andre faktorer
|
||||
- Bruker maskinlæring til å etablere forventet baseline
|
||||
- Trenger 24 timer med data før aktivering
|
||||
|
||||
2. **Performance Anomalies Detection**
|
||||
- Detekterer degradering i responstid
|
||||
- Analyserer både requests og dependencies
|
||||
- Identifiserer mønstre i page load time
|
||||
- Sammenligner med historisk baseline
|
||||
|
||||
3. **General Degradations**
|
||||
- Trace severity degradation
|
||||
- Memory leaks
|
||||
- Abnormal exception volume
|
||||
- Security anti-patterns
|
||||
|
||||
**Konfigurasjon:**
|
||||
|
||||
Smart detection krever ingen oppsett hvis Application Insights sender nok telemetri. Default e-postvarsler sendes til Monitoring Reader og Monitoring Contributor-roller.
|
||||
|
||||
```json
|
||||
// Azure Resource Manager template for konfigurasjon
|
||||
{
|
||||
"type": "Microsoft.Insights/components/ProactiveDetectionConfigs",
|
||||
"properties": {
|
||||
"enabled": true,
|
||||
"sendEmailsToSubscriptionOwners": true,
|
||||
"customEmails": ["ops-team@example.com"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Migrering til Alert-Based Smart Detection
|
||||
|
||||
Microsoft anbefaler å migrere smart detection til alerts-basert system for bedre kontroll:
|
||||
|
||||
- Oppretter alert rules for hver deteksjonsmodul
|
||||
- Muliggjør action groups for notifikasjoner
|
||||
- Gir bedre integrasjon med Azure Monitor alerts
|
||||
- Støtter multiple notification methods
|
||||
|
||||
**Migreringsmåter:**
|
||||
1. Via Azure Portal (manuell migrering)
|
||||
2. Via Azure CLI med REST API
|
||||
3. Via ARM templates for batch-migrering
|
||||
|
||||
## Custom Anomaly Rules for AI
|
||||
|
||||
### KQL Machine Learning Functions
|
||||
|
||||
Azure Monitor Logs støtter KQL-baserte ML-funksjoner for anomaly detection uten behov for datascience-ekspertise.
|
||||
|
||||
**series_decompose_anomalies() - Hovedfunksjon:**
|
||||
|
||||
```kusto
|
||||
// Detect anomalies i AI-telemetri
|
||||
let starttime = 21d;
|
||||
let endtime = 0d;
|
||||
let timeframe = 1h; // Sample frequency
|
||||
AIRequests
|
||||
| where TimeGenerated between (startofday(ago(starttime))..startofday(ago(endtime)))
|
||||
| make-series RequestRate=count() default=0
|
||||
on TimeGenerated
|
||||
from startofday(ago(starttime))
|
||||
to startofday(ago(endtime))
|
||||
step timeframe
|
||||
by ModelName
|
||||
| extend (Anomalies, AnomalyScore, ExpectedRate) =
|
||||
series_decompose_anomalies(RequestRate, 1.5, -1, 'avg', 1)
|
||||
| mv-expand RequestRate to typeof(double),
|
||||
TimeGenerated to typeof(datetime),
|
||||
Anomalies to typeof(double),
|
||||
AnomalyScore to typeof(double),
|
||||
ExpectedRate to typeof(long)
|
||||
| where Anomalies != 0
|
||||
| project TimeGenerated, ModelName, RequestRate, ExpectedRate, AnomalyScore, Anomalies
|
||||
| sort by abs(AnomalyScore) desc
|
||||
```
|
||||
|
||||
**Parametere for tuning:**
|
||||
|
||||
- **Threshold** (default 1.5): Justerer sensitivitet – lavere verdi gir flere anomalier
|
||||
- **Seasonality** (default -1): Auto-detect sesongvariasjoner
|
||||
- **Trend** (default 'avg'): 'avg', 'linefit', eller 'none'
|
||||
- **Test_points**: Antall punkter å ekskludere fra learning (for outliers)
|
||||
- **AD_method**: Anomaly detection-metode
|
||||
|
||||
### Root Cause Analysis med diffpatterns()
|
||||
|
||||
Når anomalier oppdages, bruk `diffpatterns()` plugin for å identifisere årsaker:
|
||||
|
||||
```kusto
|
||||
let anomalyDate = datetime(2026-02-05T12:00:00Z);
|
||||
AIRequests
|
||||
| extend AnomalyDate = iff(TimeGenerated == anomalyDate, "AnomalyDate", "OtherDates")
|
||||
| where TimeGenerated between (ago(7d)..now())
|
||||
| project AnomalyDate, Operation, ResultCode, ModelVersion, Region
|
||||
| evaluate diffpatterns(AnomalyDate, "OtherDates", "AnomalyDate", "~", 0.20)
|
||||
```
|
||||
|
||||
**Output:** Tabell som viser hvilke dimensjoner (operation, resultcode, etc.) som varierer mest mellom normal og anomal periode.
|
||||
|
||||
## Behavioral Baseline Detection
|
||||
|
||||
### Etablering av Baseline
|
||||
|
||||
Smart detection etablerer automatisk behavioral baselines over tid:
|
||||
|
||||
1. **Learning Period**: Minimum 24 timer (ofte 7-14 dager for robust baseline)
|
||||
2. **Continuous Learning**: Modellen oppdateres kontinuerlig med nye data
|
||||
3. **Context-Aware**: Korrelerer med faktorer som load, tid på døgnet, ukedag
|
||||
4. **Adaptive Thresholds**: Dynamiske terskler basert på historikk
|
||||
|
||||
### Dynamic Thresholds for Metric Alerts
|
||||
|
||||
Azure Monitor tilbyr dynamiske terskler basert på maskinlæring for metric alerts:
|
||||
|
||||
```json
|
||||
{
|
||||
"criteria": {
|
||||
"allOf": [{
|
||||
"name": "AI Model Response Time",
|
||||
"metricName": "ResponseTime",
|
||||
"operator": "GreaterThan",
|
||||
"threshold": "dynamic",
|
||||
"sensitivity": "Medium",
|
||||
"failingPeriods": {
|
||||
"numberOfEvaluationPeriods": 4,
|
||||
"minFailingPeriodsToAlert": 3
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Sensitivity levels:**
|
||||
- **High**: Lavere toleranse, fanger flere anomalier (mer false positives)
|
||||
- **Medium**: Balansert (anbefalt for de fleste scenarioer)
|
||||
- **Low**: Høyere toleranse, færre varsler
|
||||
|
||||
### Behavioral Patterns for AI Systems
|
||||
|
||||
Spesifikke mønstre å overvåke for AI-systemer:
|
||||
|
||||
1. **Input Anomalies**
|
||||
- Uventede prompt-lengder
|
||||
- Høy forekomst av special characters
|
||||
- Repetitive patterns (potensielt angrep)
|
||||
|
||||
2. **Output Anomalies**
|
||||
- Plutselig endring i response-lengder
|
||||
- Avvik i token consumption patterns
|
||||
- Uventede confidence scores
|
||||
|
||||
3. **Performance Anomalies**
|
||||
- Latency spikes
|
||||
- Throughput degradation
|
||||
- Rate limit hits
|
||||
|
||||
4. **Resource Anomalies**
|
||||
- Abnormal compute usage
|
||||
- Memory consumption spikes
|
||||
- Storage I/O patterns
|
||||
|
||||
## Drift Detection Patterns
|
||||
|
||||
Model drift er en spesiell form for anomaly detection kritisk for AI-systemer.
|
||||
|
||||
### Data Drift Detection
|
||||
|
||||
Overvåk endringer i input-distribusjon:
|
||||
|
||||
```kusto
|
||||
// Detect distribution shifts i prompt-karakteristikker
|
||||
let baseline_period = 7d;
|
||||
let current_period = 1d;
|
||||
let baseline = AIRequests
|
||||
| where TimeGenerated between (ago(baseline_period + current_period)..ago(current_period))
|
||||
| summarize
|
||||
AvgTokens=avg(PromptTokens),
|
||||
StdDevTokens=stdev(PromptTokens),
|
||||
P50=percentile(PromptTokens, 50),
|
||||
P95=percentile(PromptTokens, 95)
|
||||
| extend Period = "Baseline";
|
||||
let current = AIRequests
|
||||
| where TimeGenerated > ago(current_period)
|
||||
| summarize
|
||||
AvgTokens=avg(PromptTokens),
|
||||
StdDevTokens=stdev(PromptTokens),
|
||||
P50=percentile(PromptTokens, 50),
|
||||
P95=percentile(PromptTokens, 95)
|
||||
| extend Period = "Current";
|
||||
union baseline, current
|
||||
| evaluate pivot(Period, sum(AvgTokens), sum(P50), sum(P95))
|
||||
| extend
|
||||
AvgDrift = (Current_AvgTokens - Baseline_AvgTokens) / Baseline_AvgTokens * 100,
|
||||
P95Drift = (Current_P95 - Baseline_P95) / Baseline_P95 * 100
|
||||
| where abs(AvgDrift) > 15 or abs(P95Drift) > 20 // Threshold: 15% avg eller 20% P95
|
||||
```
|
||||
|
||||
### Concept Drift Detection
|
||||
|
||||
Overvåk endringer i modell-utdata:
|
||||
|
||||
```python
|
||||
from azure.ai.anomalydetector import AnomalyDetectorClient
|
||||
from azure.core.credentials import AzureKeyCredential
|
||||
|
||||
# Azure AI Anomaly Detector for univariate series
|
||||
client = AnomalyDetectorClient(endpoint, AzureKeyCredential(api_key))
|
||||
|
||||
# Time series av confidence scores
|
||||
series = [
|
||||
TimeSeriesPoint(timestamp=row[0], value=row[1]) # confidence score
|
||||
for row in data
|
||||
]
|
||||
|
||||
request = UnivariateDetectionOptions(
|
||||
series=series,
|
||||
granularity=TimeGranularity.HOURLY,
|
||||
sensitivity=90
|
||||
)
|
||||
|
||||
# Detect både anomalies og change points
|
||||
anomaly_response = client.detect_univariate_entire_series(request)
|
||||
changepoint_response = client.detect_univariate_change_point(request)
|
||||
|
||||
for i, (is_anomaly, is_changepoint) in enumerate(
|
||||
zip(anomaly_response.is_anomaly, changepoint_response.is_change_point)
|
||||
):
|
||||
if is_changepoint:
|
||||
# Persistent shift - potential concept drift
|
||||
alert_drift(timestamp=series[i].timestamp)
|
||||
elif is_anomaly:
|
||||
# Temporary spike - potential transient issue
|
||||
alert_anomaly(timestamp=series[i].timestamp)
|
||||
```
|
||||
|
||||
## Alert Correlation
|
||||
|
||||
### Korrelere Anomalier med Hendelser
|
||||
|
||||
Best practice er å korrelere anomalier med andre events:
|
||||
|
||||
```kusto
|
||||
// Korrelere performance anomalies med deployment events
|
||||
let anomalies = AIRequests
|
||||
| where TimeGenerated > ago(7d)
|
||||
| make-series RequestRate=count() default=0 on TimeGenerated step 5m
|
||||
| extend (Anomalies, Score, Expected) = series_decompose_anomalies(RequestRate)
|
||||
| mv-expand TimeGenerated to typeof(datetime), Anomalies to typeof(double), Score to typeof(double)
|
||||
| where Anomalies != 0
|
||||
| project AnomalyTime=TimeGenerated, Score;
|
||||
let deployments = AzureActivity
|
||||
| where OperationNameValue == "MICROSOFT.RESOURCES/DEPLOYMENTS/WRITE"
|
||||
| where ActivityStatusValue == "Success"
|
||||
| project DeploymentTime=TimeGenerated, ResourceGroup, Deployment=Properties.deployment;
|
||||
anomalies
|
||||
| join kind=inner (deployments) on $left.AnomalyTime == $right.DeploymentTime
|
||||
| where abs(datetime_diff('minute', AnomalyTime, DeploymentTime)) < 30
|
||||
| project AnomalyTime, DeploymentTime, Score, ResourceGroup, Deployment
|
||||
| order by Score desc
|
||||
```
|
||||
|
||||
### Multi-Signal Correlation
|
||||
|
||||
Korrelere anomalier på tvers av signaler:
|
||||
|
||||
1. **Application-level metrics** (latency, throughput, errors)
|
||||
2. **Infrastructure metrics** (CPU, memory, network)
|
||||
3. **Model metrics** (confidence scores, token usage)
|
||||
4. **Security signals** (authentication failures, suspicious patterns)
|
||||
|
||||
### Action Groups for Automated Response
|
||||
|
||||
Konfigurer action groups for koordinerte responser:
|
||||
|
||||
```json
|
||||
{
|
||||
"actionGroups": [
|
||||
{
|
||||
"actionGroupId": "/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Insights/actionGroups/AIAnomalyResponse",
|
||||
"webhookProperties": {
|
||||
"anomaly_type": "performance",
|
||||
"severity": "high",
|
||||
"auto_scale": "true"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Mulige actions:**
|
||||
- Email/SMS/Push notifications
|
||||
- Webhook til incident management system
|
||||
- Azure Function for automated remediation
|
||||
- Logic App for workflow orchestration
|
||||
- ITSM connector (ServiceNow, etc.)
|
||||
|
||||
## Azure AI-Specific Detection
|
||||
|
||||
### Defender for AI Services
|
||||
|
||||
Microsoft Defender for AI tilbyr spesialisert anomaly detection for AI-spesifikke trusler:
|
||||
|
||||
1. **Jailbreak Attempt Detection**
|
||||
- Mønstergjenkjenning av jailbreak-teknikker
|
||||
- Analyser prompt injection patterns
|
||||
- Korrelere med MITRE ATLAS framework
|
||||
|
||||
2. **Model Inference Anomalies**
|
||||
- Uvanlige API call patterns
|
||||
- Excessive inference requests
|
||||
- Suspicious input/output correlations
|
||||
|
||||
3. **Data Exfiltration Patterns**
|
||||
- Abnormal data access via model queries
|
||||
- High-volume low-latency requests
|
||||
- Sensitive data in prompts/responses
|
||||
|
||||
**Aktivering:**
|
||||
|
||||
Defender for AI aktiveres via Security Center:
|
||||
|
||||
```bash
|
||||
# Azure CLI
|
||||
az security pricing create \
|
||||
--name AIServices \
|
||||
--tier Standard \
|
||||
--subscription <subscription-id>
|
||||
```
|
||||
|
||||
### Azure AI Anomaly Detector Service
|
||||
|
||||
Dedikert service for anomaly detection (NB: Retired 1. oktober 2026 – bruk alternativene nedenfor):
|
||||
|
||||
**Alternativer etter retirement:**
|
||||
|
||||
1. **Azure ML model monitoring** – for model-spesifikk anomaly detection
|
||||
2. **Azure Monitor KQL-baserte funksjoner** – for log-basert detection
|
||||
3. **Azure Stream Analytics** – for real-time streaming anomaly detection
|
||||
4. **Custom models** i Azure ML – for spesialiserte use cases
|
||||
|
||||
### Real-Time Intelligence Anomaly Detection (Fabric)
|
||||
|
||||
For organisasjoner med Microsoft Fabric:
|
||||
|
||||
```python
|
||||
# Python plugin i Eventhouse
|
||||
from synapse.ml.services import SimpleDetectAnomalies
|
||||
|
||||
anomaly_detector = (SimpleDetectAnomalies()
|
||||
.setTimestampCol("timestamp")
|
||||
.setValueCol("model_confidence")
|
||||
.setOutputCol("anomalies")
|
||||
.setGroupbyCol("model_name")
|
||||
.setGranularity("hourly"))
|
||||
|
||||
result = anomaly_detector.transform(df)
|
||||
display(result.select("timestamp", "model_confidence", "anomalies.isAnomaly"))
|
||||
```
|
||||
|
||||
## Implementeringsmønster
|
||||
|
||||
### 1. Etabler Baseline (Uke 1-2)
|
||||
|
||||
```kusto
|
||||
// Etabler baseline for key metrics
|
||||
AIRequests
|
||||
| where TimeGenerated between (ago(14d)..now())
|
||||
| summarize
|
||||
P50_Latency=percentile(Duration, 50),
|
||||
P95_Latency=percentile(Duration, 95),
|
||||
P99_Latency=percentile(Duration, 99),
|
||||
AvgTokens=avg(TotalTokens),
|
||||
ErrorRate=countif(Success == false) * 100.0 / count()
|
||||
by bin(TimeGenerated, 1h), ModelName
|
||||
| render timechart
|
||||
```
|
||||
|
||||
### 2. Konfigurer Anomaly Detection
|
||||
|
||||
```bash
|
||||
# Opprett alert rule med dynamic threshold
|
||||
az monitor metrics alert create \
|
||||
--name "AI-Latency-Anomaly" \
|
||||
--resource-group <rg> \
|
||||
--scopes <app-insights-id> \
|
||||
--condition "avg requests/duration > dynamic High 4 of 4" \
|
||||
--window-size 5m \
|
||||
--evaluation-frequency 1m \
|
||||
--action <action-group-id>
|
||||
```
|
||||
|
||||
### 3. Implementer Root Cause Analysis Automation
|
||||
|
||||
```python
|
||||
# Azure Function triggered av alert
|
||||
import azure.functions as func
|
||||
from azure.monitor.query import LogsQueryClient
|
||||
|
||||
def main(req: func.HttpRequest) -> func.HttpResponse:
|
||||
alert_data = req.get_json()
|
||||
anomaly_time = alert_data['data']['context']['timestamp']
|
||||
|
||||
# Query for root cause
|
||||
query = f"""
|
||||
AIRequests
|
||||
| where TimeGenerated between (datetime({anomaly_time}) - 30m .. datetime({anomaly_time}) + 30m)
|
||||
| summarize ErrorCount=countif(Success==false) by Operation, ResultCode
|
||||
| top 10 by ErrorCount desc
|
||||
"""
|
||||
|
||||
result = logs_client.query_workspace(workspace_id, query)
|
||||
|
||||
# Send enriched alert
|
||||
send_enriched_alert(result)
|
||||
```
|
||||
|
||||
### 4. Continuous Tuning
|
||||
|
||||
Juster sensitivitet basert på false positive rate:
|
||||
|
||||
- Hvis > 30% false positives: øk threshold eller sensitivity
|
||||
- Hvis < 5% false positives: reduser threshold for tidligere detection
|
||||
- Revurder baseline hver måned ved sesongrelaterte endringer
|
||||
|
||||
## For Cosmo
|
||||
|
||||
### Når anbefale anomaly detection
|
||||
|
||||
**ALLTID anbefal** for:
|
||||
- Produksjons-AI-applikasjoner med høy trafikk
|
||||
- AI-systemer med sensitive data eller compliance-krav
|
||||
- Multimodal AI-løsninger med komplekse dependencies
|
||||
- AI-agenter med autonom beslutningskraft
|
||||
|
||||
**Ikke kritisk** for:
|
||||
- Proof-of-concepts under utvikling
|
||||
- Lavtrafikks prototype-løsninger uten produksjonsdata
|
||||
|
||||
### Platform-spesifikke anbefalinger
|
||||
|
||||
| Plattform | Primær Metode | Sekundær Metode |
|
||||
|-----------|---------------|-----------------|
|
||||
| Azure AI Foundry | Application Insights Smart Detection | KQL-baserte custom queries |
|
||||
| Copilot Studio | M365 audit logs + KQL | Application Insights (via plugin) |
|
||||
| Power Platform AI | Application Insights + Power Platform analytics | Custom Dataverse queries |
|
||||
| Azure OpenAI Service | Application Insights + Defender for AI | Azure Monitor metric alerts |
|
||||
|
||||
### Arkitekturdialog
|
||||
|
||||
**Spørsmål å stille:**
|
||||
|
||||
1. "Hvilke typer avvik er viktigst å oppdage for deres AI-applikasjon – performance, sikkerhet, eller datakvalitet?"
|
||||
2. "Har dere eksisterende alert-systemer dette må integreres med?"
|
||||
3. "Hva er akseptabel responstid fra anomaly til varsling?"
|
||||
4. "Trenger dere automated remediation eller kun notifikasjoner?"
|
||||
|
||||
**Typiske trade-offs:**
|
||||
|
||||
- **Sensitivity vs. Alert Fatigue**: Høyere sensitivitet gir flere false positives
|
||||
- **Real-time vs. Batch**: Real-time detection krever mer ressurser
|
||||
- **Custom vs. Built-in**: Custom ML-modeller gir bedre presisjon men høyere vedlikeholdskostnad
|
||||
|
||||
### Kostnadsestimat
|
||||
|
||||
Anomaly detection koster primært via:
|
||||
1. **Log Analytics ingestion**: ~NOK 30/GB
|
||||
2. **Application Insights**: Inkludert i Basic-tier (gratis til 5 GB/mnd)
|
||||
3. **Alert rules**: Gratis for første 10 metric alerts, NOK 1/mnd per ekstra
|
||||
4. **Action groups**: Gratis for de fleste notification types
|
||||
|
||||
**Tommelfingerregel:** Budsjetter NOK 500-2000/mnd for typisk produksjons-AI-app med comprehensive anomaly detection.
|
||||
|
||||
---
|
||||
|
||||
**Sources:**
|
||||
- [Tutorial: Detect and analyze anomalies using KQL](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/kql-machine-learning-azure-monitor)
|
||||
- [Smart detection in Application Insights](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/proactive-diagnostics)
|
||||
- [Detect and mitigate potential issues using AIOps and machine learning](https://learn.microsoft.com/en-us/azure/azure-monitor/aiops/aiops-machine-learning)
|
||||
- [Azure Monitor dynamic thresholds](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-dynamic-thresholds)
|
||||
- [Microsoft Defender for AI Services](https://learn.microsoft.com/en-us/azure/defender-for-cloud/ai-threat-protection)
|
||||
- [Anomaly detection in Real-Time Intelligence (Fabric)](https://learn.microsoft.com/en-us/fabric/real-time-intelligence/anomaly-detection)
|
||||
- [Azure AI Anomaly Detector](https://learn.microsoft.com/en-us/azure/ai-services/anomaly-detector/overview) (retired Oct 2026)
|
||||
- [Azure Stream Analytics anomaly detection](https://learn.microsoft.com/en-us/azure/stream-analytics/stream-analytics-machine-learning-anomaly-detection)
|
||||
Loading…
Add table
Add a link
Reference in a new issue