Skip to content

Commit 839b264

Browse files
harrybinCopilot
andcommitted
feat: add automated workflow for performance issue detection and resolution via Azure and GitHub Copilot
Co-authored-by: Copilot <copilot@github.com>
1 parent 59ea65b commit 839b264

1 file changed

Lines changed: 196 additions & 0 deletions

File tree

aiops-Mainteance-mit-KI_Interview.md

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,202 @@ Der eigentliche Gamechanger ist **[Application Insights Transaction Diagnostics]
88

99
Also: "Netter Assistent" = Copilot schlägt dir in der IDE `async/await` statt Callbacks vor. **Was wir meinen** = Du hast einen Latenz-Spike in der Checkout-API, und die KI korreliert in Sekunden, dass das Problem eine veraltete Library ist, die bei 500 gleichzeitigen Requests eine Connection-Pool-Exhaustion verursacht — und zeigt dir die exakte Codezeile im Distributed Trace. **Von "ich vermute" zu "ich sehe".**
1010

11+
### End-to-End-Ablauf: Von Smart Detection bis zum automatisch bearbeiteten GitHub Issue
12+
13+
Der folgende Ablauf beschreibt, wie ein Performance-Problem **vollautomatisch** von der Erkennung in Azure über die Analyse bis hin zur Code-Bearbeitung durch den GitHub Copilot Coding Agent fließen kann — **ohne Azure DevOps**, rein über Azure Cloud + GitHub.
14+
15+
#### Ablauf in 6 Schritten
16+
17+
```
18+
┌─────────────────────────────────────────────────────────────────────────┐
19+
│ 1. SMART DETECTION erkennt Performance-Anomalie │
20+
│ (Application Insights, ML-basiert, automatisch) │
21+
│ │ │
22+
│ ▼ │
23+
│ 2. ALERT RULE feuert (migrierte Smart Detection → Azure Monitor Alert) │
24+
│ │ │
25+
│ ▼ │
26+
│ 3. ACTION GROUP triggert Logic App │
27+
│ │ │
28+
│ ▼ │
29+
│ 4. LOGIC APP erstellt GitHub Issue via GitHub-Connector │
30+
│ (inkl. Diagnose-Daten, betroffene Resource, Severity, Zeitstempel) │
31+
│ │ │
32+
│ ▼ │
33+
│ 5. LOGIC APP weist das Issue an "Copilot" zu (assignee: copilot-swe-agent)│
34+
│ │ │
35+
│ ▼ │
36+
│ 6. COPILOT CODING AGENT startet VM, analysiert Code, erstellt Draft-PR │
37+
│ (Mensch reviewed und approved) │
38+
└─────────────────────────────────────────────────────────────────────────┘
39+
```
40+
41+
#### Schritt 1: Smart Detection erkennt das Problem
42+
43+
[Smart Detection](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/proactive-diagnostics) in Application Insights läuft **vollständig automatisch** — keine manuelle Konfiguration nötig. Es analysiert die Telemetrie deiner App und erkennt per Machine Learning:
44+
45+
- **[Failure Anomalies](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/proactive-failure-diagnostics)**: Ungewöhnlicher Anstieg der Fehlerrate außerhalb des erwarteten Korridors
46+
- **[Performance Anomalies](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/smart-detection-performance)**: Response-Time-Degradation, Dependency-Latenz-Verschlechterung im Vergleich zur historischen Baseline
47+
- **[Memory Leaks](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/proactive-potential-memory-leak)**, **[Trace-Severity-Degradation](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/proactive-trace-severity)**, **[Exception-Volume-Anomalien](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/proactive-exception-volume)**
48+
49+
**Beispiel-Szenario:** Smart Detection erkennt, dass die Checkout-API plötzlich 3x langsamer antwortet als ihre 7-Tage-Baseline — eine "Response Latency Degradation".
50+
51+
#### Schritt 2: Smart Detection als Azure Monitor Alert Rule
52+
53+
Seit der [Migration von Smart Detection zu Alerts](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-smart-detections-migration) werden Smart-Detection-Erkennungen als vollwertige **Azure Monitor Alert Rules** behandelt. Für jede Detection-Art wird eine eigene Alert Rule erstellt:
54+
55+
| Smart Detection | Alert Rule Name |
56+
|---|---|
57+
| Degradation in Server Response Time | `Response Latency Degradation - <resource>` |
58+
| Degradation in Dependency Duration | `Dependency Latency Degradation - <resource>` |
59+
| Trace Severity Degradation | `Trace Severity Degradation - <resource>` |
60+
| Abnormal Exception Volume | `Exception Anomalies - <resource>` |
61+
| Memory Leak | `Potential Memory Leak - <resource>` |
62+
63+
> **Hinweis:** Die **Failure Anomalies**-Regel existiert bereits als Alert Rule und erfordert keine Migration.
64+
65+
Der Vorteil: Diese Alert Rules können mit **[Action Groups](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/action-groups)** verknüpft werden — und genau das ist der Schlüssel zur Automatisierung.
66+
67+
#### Schritt 3: Action Group triggert eine Logic App
68+
69+
Eine **Action Group** ist die Brücke zwischen dem Alert und der Automatisierung. Sie definiert, was passiert, wenn ein Alert feuert — E-Mail, SMS, Webhook, oder eben: **Logic App**.
70+
71+
Die Action Group wird so konfiguriert:
72+
- **Action Type**: `Logic App`
73+
- **Common Alert Schema**: `Yes` (damit hat die Logic App ein einheitliches JSON-Format mit `alertRule`, `severity`, `firedDateTime`, `alertTargetIDs`, `description` etc.)
74+
75+
#### Schritt 4 + 5: Logic App erstellt GitHub Issue und weist es Copilot zu
76+
77+
Die [Logic App](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-logic-apps) empfängt den Alert über einen **HTTP-Trigger** und nutzt den [GitHub-Connector](https://learn.microsoft.com/en-us/connectors/github/) (nativ in Logic Apps verfügbar), um:
78+
79+
**a) Ein GitHub Issue zu erstellen** (Action: `CreateIssue`):
80+
- **Title**: z.B. `🔴 Performance Alert: Response Latency Degradation - checkout-api` (zusammengesetzt aus `alertRule` + `severity`)
81+
- **Body**: Strukturierte Informationen aus dem Common Alert Schema:
82+
```markdown
83+
## Performance Alert
84+
**Severity:** Sev2
85+
**Alert Rule:** Response Latency Degradation - checkout-api
86+
**Fired:** 2026-04-22T14:32:00Z
87+
**Affected Resource:** /subscriptions/.../providers/microsoft.insights/components/checkout-api
88+
**Description:** Response time degradation detected. P95 latency increased from 120ms to 380ms.
89+
90+
### Nächste Schritte
91+
- Analysiere die Transaction Diagnostics im Azure Portal
92+
- Prüfe die Dependencies auf Latenz-Änderungen
93+
- Portal-Link: https://portal.azure.com/#@.../resource/.../diagnostics
94+
```
95+
- **Labels**: `performance`, `automated`, `aiops`
96+
97+
**b) Das Issue an Copilot zuweisen** (Action: `UpdateIssue` mit `assignees: ["copilot-swe-agent"]`):
98+
99+
Der Logic-App-Flow sieht so aus:
100+
1. **Trigger**: "When a HTTP request is received" (Common Alert Schema)
101+
2. **Action**: "Create an issue" (GitHub-Connector) → gibt `issueNumber` zurück
102+
3. **Action**: "Update an Issue" (GitHub-Connector) → setzt `assignees` auf `copilot-swe-agent` und optional Labels
103+
104+
> **Alternativ ohne Logic App**: Die Action Group kann auch direkt einen **Webhook** an die [GitHub REST API](https://docs.github.com/en/rest/issues/issues#create-an-issue) senden (via Azure Function als Middleware, die das Alert-JSON in die GitHub-API-Struktur transformiert). Die Logic-App-Variante ist aber No-Code und in Minuten aufgesetzt.
105+
106+
#### Schritt 6: GitHub Copilot Coding Agent übernimmt
107+
108+
Sobald das Issue [Copilot zugewiesen](https://github.blog/news-insights/product-news/github-copilot-meet-the-new-coding-agent/) wird, passiert folgendes automatisch:
109+
110+
1. Der Agent reagiert mit einem 👀 Emoji auf das Issue
111+
2. Er startet eine **sichere VM via GitHub Actions**, klont das Repo
112+
3. Er analysiert die Codebase mittels **RAG (Retrieval Augmented Generation)** über GitHub Code Search
113+
4. Er nutzt die Issue-Beschreibung (inkl. der Alert-Daten aus Azure), um den Kontext zu verstehen
114+
5. Er erstellt einen **Draft-PR** mit Commits, Session-Logs und Reasoning-Steps
115+
6. Er taggt den Entwickler zur **menschlichen Review**
116+
117+
**Sicherheits-Garantien:**
118+
- Agent kann nur auf Branches pushen, die er selbst erstellt hat
119+
- Der PR-Ersteller kann nicht selbst approven
120+
- GitHub Actions laufen erst nach menschlicher Freigabe
121+
122+
### Was in Azure konfiguriert werden muss (Schritt-für-Schritt)
123+
124+
#### Voraussetzung: Application Insights aktiv
125+
126+
Die Web-App muss mit [Application Insights](https://learn.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview) instrumentiert sein (SDK oder Auto-Instrumentation). Smart Detection ist per Default aktiv, sobald genug Telemetrie fließt.
127+
128+
#### A. Smart Detection zu Alerts migrieren
129+
130+
1. **Azure Portal** → Application Insights Resource → **Investigate****Smart Detection**
131+
2. Banner "Migrate smart detection to alerts (Preview)" anklicken
132+
3. Optional: "Migrate all Application Insights resources in this subscription" aktivieren
133+
4. Action Group auswählen oder Default nutzen → **Migrate**
134+
135+
> **CLI-Alternative:**
136+
> ```bash
137+
> az rest --method POST \
138+
> --uri /subscriptions/{subId}/providers/Microsoft.AlertsManagement/migrateFromSmartDetection?api-version=2021-01-01-preview \
139+
> --body '{"scope":["/subscriptions/{subId}/resourceGroups/{rg}/providers/microsoft.insights/components/{appInsights}"],"actionGroupCreationPolicy":"Auto"}'
140+
> ```
141+
142+
#### B. Logic App erstellen
143+
144+
1. **Azure Portal** → Logic Apps → **Create** → Consumption (Multi-tenant)
145+
2. **Trigger**: "When a HTTP request is received"
146+
- Request Body JSON Schema: [Common Alert Schema](https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-common-schema) einfügen (enthält `schemaId`, `data.essentials.alertRule`, `severity`, `firedDateTime`, `alertTargetIDs`, `description`)
147+
3. **Action 1**: GitHub → "Create an issue"
148+
- `repositoryOwner`: dein GitHub-Org/User
149+
- `repositoryName`: dein Repo
150+
- `title`: Dynamischer Inhalt aus `alertRule` + `severity`
151+
- `body`: Dynamischer Inhalt aus `description`, `firedDateTime`, `alertTargetIDs`
152+
4. **Action 2**: GitHub → "Update an Issue"
153+
- `issueNumber`: Output von Action 1
154+
- `assignees`: `["copilot-swe-agent"]`
155+
- `labels`: `["performance", "automated", "aiops"]`
156+
157+
> **Wichtig:** Beim ersten Mal wirst du aufgefordert, dich bei GitHub zu authentifizieren. Die Logic App benötigt **write**-Berechtigungen auf das Ziel-Repository.
158+
159+
#### C. Action Group erstellen und mit Alert Rule verknüpfen
160+
161+
1. **Azure Portal** → Monitor → **Alerts****Action groups****Create**
162+
2. **Actions Tab**:
163+
- Action Type: **Logic App**
164+
- Logic App: die eben erstellte auswählen
165+
- Common Alert Schema: **Yes**
166+
3. **Save**
167+
4. Zurück zu **Alert Rules** → die migrierten Smart Detection Rules öffnen → die neue Action Group zuweisen
168+
169+
#### D. GitHub-Repo vorbereiten
170+
171+
1. **Copilot Coding Agent aktivieren**: Repository Settings → Features → Copilot → "Copilot coding agent" aktivieren (erfordert Copilot Enterprise oder Pro+)
172+
2. **`.github/copilot-instructions.md`** anlegen mit Kontext für den Agent:
173+
```markdown
174+
# Copilot Instructions
175+
- Performance-Issues von Azure Smart Detection enthalten Alert-Daten im Issue-Body
176+
- Prüfe zuerst die in der Alert-Description genannten Endpoints und Dependencies
177+
- Erstelle einen Fix mit zugehörigem Unit Test
178+
- Füge eine PR-Summary hinzu, die den Alert-Kontext referenziert
179+
```
180+
3. Optional: **MCP-Server** konfigurieren (z.B. GitHub MCP Server), damit der Agent auf erweiterten Kontext zugreifen kann
181+
182+
### Azure Copilot als manueller Analyse-Schritt (Parallel-Pfad)
183+
184+
Zusätzlich zum automatisierten Flow kann ein Ops-Engineer den Alert auch **interaktiv mit Azure Copilot** analysieren:
185+
186+
1. **Azure Portal** → Die betroffene App Service Resource öffnen
187+
2. **Azure Copilot** (Chat-Icon oben rechts) → Prompt: *"Why is my web app slow?"*
188+
3. Azure Copilot wählt automatisch das richtige Diagnose-Tool (z.B. "Web App Slow" Detector) und führt Checks durch
189+
4. Ergebnis: Potenzielle Ursachen + Lösungsvorschläge + Link zu den [Transaction Diagnostics](https://learn.microsoft.com/en-us/azure/azure-monitor/app/transaction-search-and-diagnostics)
190+
5. Follow-up: *"Give me a summary of these diagnostics"* → Copilot fasst die Insights zusammen
191+
192+
Dieser manuelle Pfad ist **komplementär** zum automatisierten Flow — der Mensch bekommt die tiefe Diagnostik, während der Coding Agent parallel bereits am Fix arbeitet.
193+
194+
### Zusammenfassung: Was wo konfiguriert wird
195+
196+
| Komponente | Wo | Was |
197+
|---|---|---|
198+
| **Application Insights** | Azure Portal → App Insights | Telemetrie-Sammlung + Smart Detection (auto-aktiv) |
199+
| **Smart Detection Migration** | App Insights → Smart Detection → Migrate | Smart Detection → Alert Rules konvertieren |
200+
| **Logic App** | Azure Portal → Logic Apps | HTTP-Trigger → GitHub Issue erstellen → Copilot zuweisen |
201+
| **Action Group** | Azure Monitor → Alerts → Action Groups | Verknüpft Alert Rule mit Logic App |
202+
| **Alert Rules** | Azure Monitor → Alerts → Alert Rules | Smart Detection Rules + Action Group zuweisen |
203+
| **GitHub Repo** | github.com → Settings | Copilot Coding Agent aktivieren + Instructions pflegen |
204+
205+
> **Kein Azure DevOps involviert.** Die gesamte Kette läuft über Azure Monitor → Logic Apps → GitHub REST API → GitHub Copilot Coding Agent. Der einzige "Mensch im Loop" ist das finale PR-Review.
206+
11207
---
12208

13209
## 2. Technical Debt ist oft politisch induziert: seid schneller, billiger. Hilft KI wirklich dagegen?

0 commit comments

Comments
 (0)