Skip to content

Commit c69a893

Browse files
committed
update
1 parent c118ccc commit c69a893

File tree

2 files changed

+97
-20
lines changed

2 files changed

+97
-20
lines changed

analysis/kusto/00-telemetry-validation.kql

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,68 @@ RawEventsVSCodeExt
144144
UniqueMachines = dcount(VSCodeMachineId)
145145
by ManagerName = tostring(Properties.managername), ErrorType = tostring(Properties.errortype)
146146
| extend TotalUniqueMachines = totalMachines
147-
| extend MachinePct = round(todouble(UniqueMachines) / todouble(TotalUniqueMachines) * 100, 1)
147+
| extend MachinePct = round(todouble(UniqueMachines) / todouble(TotalUniqueMachines) * 100, 2)
148148
| order by EventCount desc;
149149

150150

151+
// =============================================================================
152+
// CHECK 4a: SPAWN_TIMEOUT failures broken down by manager × extension version
153+
// Shows whether spawn_timeout is improving or worsening across versions.
154+
// If a new version shows higher MachinePct → that release regressed timeout handling.
155+
// =============================================================================
156+
let totalByVersion = RawEventsVSCodeExt
157+
| where ServerTimestamp > ago(7d)
158+
| where ExtensionName == "ms-python.vscode-python-envs"
159+
| where ExtensionVersion != ""
160+
| extend _minor = toint(extract("^1\\.(\\d+)", 1, ExtensionVersion)), _patch = tolong(extract("^1\\.\\d+\\.(\\d+)", 1, ExtensionVersion))
161+
| where _minor > 23 or (_minor == 23 and _patch >= 10781012)
162+
| summarize TotalMachines = dcount(VSCodeMachineId) by ExtVersion = ExtensionVersion;
163+
RawEventsVSCodeExt
164+
| where ServerTimestamp > ago(7d)
165+
| where EventName == "ms-python.vscode-python-envs/manager_registration.failed"
166+
| extend ExtVersion = tostring(Properties["common.extversion"])
167+
| extend _minor = toint(extract("^1\\.(\\d+)", 1, ExtVersion)), _patch = tolong(extract("^1\\.\\d+\\.(\\d+)", 1, ExtVersion))
168+
| where _minor > 23 or (_minor == 23 and _patch >= 10781012)
169+
| where tostring(Properties.errortype) == "spawn_timeout"
170+
| summarize
171+
EventCount = count(),
172+
UniqueMachines = dcount(VSCodeMachineId)
173+
by ManagerName = tostring(Properties.managername), ExtVersion
174+
| join kind=inner totalByVersion on ExtVersion
175+
| extend MachinePct = round(todouble(UniqueMachines) / todouble(TotalMachines) * 100, 2)
176+
| project ManagerName, ExtVersion, EventCount, UniqueMachines, TotalMachines, MachinePct
177+
| order by ManagerName asc, ExtVersion desc;
178+
179+
180+
// =============================================================================
181+
// CHECK 4b: UNKNOWN failures broken down by manager × extension version
182+
// Shows whether unknown errors are improving or worsening across versions.
183+
// High counts in the latest version → new unclassified error paths need investigation.
184+
// =============================================================================
185+
let totalByVersion = RawEventsVSCodeExt
186+
| where ServerTimestamp > ago(7d)
187+
| where ExtensionName == "ms-python.vscode-python-envs"
188+
| where ExtensionVersion != ""
189+
| extend _minor = toint(extract("^1\\.(\\d+)", 1, ExtensionVersion)), _patch = tolong(extract("^1\\.\\d+\\.(\\d+)", 1, ExtensionVersion))
190+
| where _minor > 23 or (_minor == 23 and _patch >= 10781012)
191+
| summarize TotalMachines = dcount(VSCodeMachineId) by ExtVersion = ExtensionVersion;
192+
RawEventsVSCodeExt
193+
| where ServerTimestamp > ago(7d)
194+
| where EventName == "ms-python.vscode-python-envs/manager_registration.failed"
195+
| extend ExtVersion = tostring(Properties["common.extversion"])
196+
| extend _minor = toint(extract("^1\\.(\\d+)", 1, ExtVersion)), _patch = tolong(extract("^1\\.\\d+\\.(\\d+)", 1, ExtVersion))
197+
| where _minor > 23 or (_minor == 23 and _patch >= 10781012)
198+
| where tostring(Properties.errortype) == "unknown"
199+
| summarize
200+
EventCount = count(),
201+
UniqueMachines = dcount(VSCodeMachineId)
202+
by ManagerName = tostring(Properties.managername), ExtVersion
203+
| join kind=inner totalByVersion on ExtVersion
204+
| extend MachinePct = round(todouble(UniqueMachines) / todouble(TotalMachines) * 100, 2)
205+
| project ManagerName, ExtVersion, EventCount, UniqueMachines, TotalMachines, MachinePct
206+
| order by ManagerName asc, ExtVersion desc;
207+
208+
151209
// =============================================================================
152210
// CHECK 5: SETUP.HANG_DETECTED — property validation
153211
// Expected: failureStage in {nativeFinder, managerRegistration, envSelection, terminalWatcher, settingsListener}

analysis/kusto/dashboard.ipynb

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@
5656
"metadata": {},
5757
"outputs": [],
5858
"source": [
59-
"for title, query in load_kql_sections(\"00-telemetry-validation.kql\"):\n",
59+
"sections = load_kql_sections(\"00-telemetry-validation.kql\")\n",
60+
"for title, query in sections[:4]:\n",
6061
" display(Markdown(f\"### {title}\"))\n",
6162
" try:\n",
6263
" df = run_kql(client, query)\n",
@@ -68,9 +69,27 @@
6869
]
6970
},
7071
{
71-
"cell_type": "markdown",
72+
"cell_type": "code",
73+
"execution_count": null,
7274
"id": "4",
7375
"metadata": {},
76+
"outputs": [],
77+
"source": [
78+
"for title, query in sections[4:]:\n",
79+
" display(Markdown(f\"### {title}\"))\n",
80+
" try:\n",
81+
" df = run_kql(client, query)\n",
82+
" display(df)\n",
83+
" if \"TotalUniqueMachines\" in df.columns:\n",
84+
" print(f\"Total unique machines: {df['TotalUniqueMachines'].iloc[0]:,}\")\n",
85+
" except Exception as e:\n",
86+
" print(f\" ⚠️ {e}\")"
87+
]
88+
},
89+
{
90+
"cell_type": "markdown",
91+
"id": "5",
92+
"metadata": {},
7493
"source": [
7594
"---\n",
7695
"## 1. Registration Failure Stage Breakdown (28 days)\n",
@@ -82,7 +101,7 @@
82101
{
83102
"cell_type": "code",
84103
"execution_count": null,
85-
"id": "5",
104+
"id": "6",
86105
"metadata": {},
87106
"outputs": [],
88107
"source": [
@@ -92,7 +111,7 @@
92111
},
93112
{
94113
"cell_type": "markdown",
95-
"id": "6",
114+
"id": "7",
96115
"metadata": {},
97116
"source": [
98117
"---\n",
@@ -105,7 +124,7 @@
105124
{
106125
"cell_type": "code",
107126
"execution_count": null,
108-
"id": "7",
127+
"id": "8",
109128
"metadata": {},
110129
"outputs": [],
111130
"source": [
@@ -115,7 +134,7 @@
115134
},
116135
{
117136
"cell_type": "markdown",
118-
"id": "8",
137+
"id": "9",
119138
"metadata": {},
120139
"source": [
121140
"---\n",
@@ -127,7 +146,7 @@
127146
{
128147
"cell_type": "code",
129148
"execution_count": null,
130-
"id": "9",
149+
"id": "10",
131150
"metadata": {},
132151
"outputs": [],
133152
"source": [
@@ -137,7 +156,7 @@
137156
},
138157
{
139158
"cell_type": "markdown",
140-
"id": "10",
159+
"id": "11",
141160
"metadata": {},
142161
"source": [
143162
"---\n",
@@ -149,7 +168,7 @@
149168
{
150169
"cell_type": "code",
151170
"execution_count": null,
152-
"id": "11",
171+
"id": "12",
153172
"metadata": {},
154173
"outputs": [],
155174
"source": [
@@ -159,7 +178,7 @@
159178
},
160179
{
161180
"cell_type": "markdown",
162-
"id": "12",
181+
"id": "13",
163182
"metadata": {},
164183
"source": [
165184
"---\n",
@@ -171,7 +190,7 @@
171190
{
172191
"cell_type": "code",
173192
"execution_count": null,
174-
"id": "13",
193+
"id": "14",
175194
"metadata": {},
176195
"outputs": [],
177196
"source": [
@@ -204,7 +223,7 @@
204223
},
205224
{
206225
"cell_type": "markdown",
207-
"id": "14",
226+
"id": "15",
208227
"metadata": {},
209228
"source": [
210229
"---\n",
@@ -216,7 +235,7 @@
216235
{
217236
"cell_type": "code",
218237
"execution_count": null,
219-
"id": "15",
238+
"id": "16",
220239
"metadata": {},
221240
"outputs": [],
222241
"source": [
@@ -239,7 +258,7 @@
239258
},
240259
{
241260
"cell_type": "markdown",
242-
"id": "16",
261+
"id": "17",
243262
"metadata": {},
244263
"source": [
245264
"---\n",
@@ -251,7 +270,7 @@
251270
{
252271
"cell_type": "code",
253272
"execution_count": null,
254-
"id": "17",
273+
"id": "18",
255274
"metadata": {},
256275
"outputs": [],
257276
"source": [
@@ -275,7 +294,7 @@
275294
},
276295
{
277296
"cell_type": "markdown",
278-
"id": "18",
297+
"id": "19",
279298
"metadata": {},
280299
"source": [
281300
"---\n",
@@ -287,7 +306,7 @@
287306
{
288307
"cell_type": "code",
289308
"execution_count": null,
290-
"id": "19",
309+
"id": "20",
291310
"metadata": {},
292311
"outputs": [],
293312
"source": [
@@ -297,7 +316,7 @@
297316
},
298317
{
299318
"cell_type": "markdown",
300-
"id": "20",
319+
"id": "21",
301320
"metadata": {},
302321
"source": [
303322
"---\n",
@@ -309,7 +328,7 @@
309328
{
310329
"cell_type": "code",
311330
"execution_count": null,
312-
"id": "21",
331+
"id": "22",
313332
"metadata": {},
314333
"outputs": [],
315334
"source": [

0 commit comments

Comments
 (0)