@calltelemetry/ct-lab-mcp 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/ct-lab-mcp.d.ts.map +1 -1
- package/dist/bin/ct-lab-mcp.js +21 -7
- package/dist/bin/ct-lab-mcp.js.map +1 -1
- package/dist/src/appliance/commands.d.ts.map +1 -1
- package/dist/src/appliance/commands.js +24 -0
- package/dist/src/appliance/commands.js.map +1 -1
- package/dist/src/appliance/executor.d.ts.map +1 -1
- package/dist/src/appliance/executor.js +7 -1
- package/dist/src/appliance/executor.js.map +1 -1
- package/dist/src/appliance/mock.d.ts +6 -0
- package/dist/src/appliance/mock.d.ts.map +1 -1
- package/dist/src/appliance/mock.js +27 -6
- package/dist/src/appliance/mock.js.map +1 -1
- package/dist/src/appliance/types.d.ts +20 -1
- package/dist/src/appliance/types.d.ts.map +1 -1
- package/dist/src/appliance/types.js.map +1 -1
- package/dist/src/credentials/errors.d.ts +16 -0
- package/dist/src/credentials/errors.d.ts.map +1 -0
- package/dist/src/credentials/errors.js +21 -0
- package/dist/src/credentials/errors.js.map +1 -0
- package/dist/src/credentials/resolver.d.ts +16 -0
- package/dist/src/credentials/resolver.d.ts.map +1 -1
- package/dist/src/credentials/resolver.js +104 -10
- package/dist/src/credentials/resolver.js.map +1 -1
- package/dist/src/credentials/types.d.ts +8 -0
- package/dist/src/credentials/types.d.ts.map +1 -1
- package/dist/src/diagnostics/collector.d.ts +37 -0
- package/dist/src/diagnostics/collector.d.ts.map +1 -0
- package/dist/src/diagnostics/collector.js +452 -0
- package/dist/src/diagnostics/collector.js.map +1 -0
- package/dist/src/diagnostics/types.d.ts +103 -0
- package/dist/src/diagnostics/types.d.ts.map +1 -0
- package/dist/src/diagnostics/types.js +8 -0
- package/dist/src/diagnostics/types.js.map +1 -0
- package/dist/src/hypervisors/esxi/client.d.ts +1 -0
- package/dist/src/hypervisors/esxi/client.d.ts.map +1 -1
- package/dist/src/hypervisors/esxi/client.js +15 -3
- package/dist/src/hypervisors/esxi/client.js.map +1 -1
- package/dist/src/hypervisors/esxi/mock.d.ts +1 -0
- package/dist/src/hypervisors/esxi/mock.d.ts.map +1 -1
- package/dist/src/hypervisors/esxi/mock.js +4 -0
- package/dist/src/hypervisors/esxi/mock.js.map +1 -1
- package/dist/src/hypervisors/manager.d.ts.map +1 -1
- package/dist/src/hypervisors/manager.js +37 -3
- package/dist/src/hypervisors/manager.js.map +1 -1
- package/dist/src/hypervisors/proxmox/client.d.ts +13 -1
- package/dist/src/hypervisors/proxmox/client.d.ts.map +1 -1
- package/dist/src/hypervisors/proxmox/client.js +485 -4
- package/dist/src/hypervisors/proxmox/client.js.map +1 -1
- package/dist/src/hypervisors/proxmox/mock.d.ts +1 -0
- package/dist/src/hypervisors/proxmox/mock.d.ts.map +1 -1
- package/dist/src/hypervisors/proxmox/mock.js +4 -0
- package/dist/src/hypervisors/proxmox/mock.js.map +1 -1
- package/dist/src/hypervisors/types.d.ts +119 -2
- package/dist/src/hypervisors/types.d.ts.map +1 -1
- package/dist/src/proxmox/mock.d.ts +1 -1
- package/dist/src/proxmox/mock.d.ts.map +1 -1
- package/dist/src/proxmox/mock.js +103 -1
- package/dist/src/proxmox/mock.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +2 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/slot/manager.d.ts +26 -1
- package/dist/src/slot/manager.d.ts.map +1 -1
- package/dist/src/slot/manager.js +278 -1
- package/dist/src/slot/manager.js.map +1 -1
- package/dist/src/slot/types.d.ts +49 -0
- package/dist/src/slot/types.d.ts.map +1 -1
- package/dist/src/slot/types.js +18 -0
- package/dist/src/slot/types.js.map +1 -1
- package/dist/src/tools/credential-status.d.ts +29 -0
- package/dist/src/tools/credential-status.d.ts.map +1 -0
- package/dist/src/tools/credential-status.js +81 -0
- package/dist/src/tools/credential-status.js.map +1 -0
- package/dist/src/tools/cube-provision.d.ts +288 -0
- package/dist/src/tools/cube-provision.d.ts.map +1 -0
- package/dist/src/tools/cube-provision.js +892 -0
- package/dist/src/tools/cube-provision.js.map +1 -0
- package/dist/src/tools/cube-tools.d.ts +137 -0
- package/dist/src/tools/cube-tools.d.ts.map +1 -0
- package/dist/src/tools/cube-tools.js +292 -0
- package/dist/src/tools/cube-tools.js.map +1 -0
- package/dist/src/tools/cucm-emulator-tool.d.ts +85 -0
- package/dist/src/tools/cucm-emulator-tool.d.ts.map +1 -0
- package/dist/src/tools/cucm-emulator-tool.js +191 -0
- package/dist/src/tools/cucm-emulator-tool.js.map +1 -0
- package/dist/src/tools/cucm-trunk.d.ts +165 -0
- package/dist/src/tools/cucm-trunk.d.ts.map +1 -0
- package/dist/src/tools/cucm-trunk.js +354 -0
- package/dist/src/tools/cucm-trunk.js.map +1 -0
- package/dist/src/tools/diagnostics.d.ts +58 -0
- package/dist/src/tools/diagnostics.d.ts.map +1 -0
- package/dist/src/tools/diagnostics.js +212 -0
- package/dist/src/tools/diagnostics.js.map +1 -0
- package/dist/src/tools/guest-agent.d.ts +34 -0
- package/dist/src/tools/guest-agent.d.ts.map +1 -0
- package/dist/src/tools/guest-agent.js +133 -0
- package/dist/src/tools/guest-agent.js.map +1 -0
- package/dist/src/tools/index.d.ts +10 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +97 -1
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/list-hosts.d.ts +9 -0
- package/dist/src/tools/list-hosts.d.ts.map +1 -1
- package/dist/src/tools/list-hosts.js.map +1 -1
- package/dist/src/tools/network-tools.d.ts +65 -0
- package/dist/src/tools/network-tools.d.ts.map +1 -0
- package/dist/src/tools/network-tools.js +200 -0
- package/dist/src/tools/network-tools.js.map +1 -0
- package/dist/src/tools/provision-tools.d.ts.map +1 -1
- package/dist/src/tools/provision-tools.js +19 -0
- package/dist/src/tools/provision-tools.js.map +1 -1
- package/dist/src/tools/server-management.d.ts +51 -0
- package/dist/src/tools/server-management.d.ts.map +1 -0
- package/dist/src/tools/server-management.js +175 -0
- package/dist/src/tools/server-management.js.map +1 -0
- package/dist/src/tools/storage-tools.d.ts +177 -0
- package/dist/src/tools/storage-tools.d.ts.map +1 -1
- package/dist/src/tools/storage-tools.js +420 -0
- package/dist/src/tools/storage-tools.js.map +1 -1
- package/dist/src/tools/update-cli.d.ts +62 -0
- package/dist/src/tools/update-cli.d.ts.map +1 -0
- package/dist/src/tools/update-cli.js +142 -0
- package/dist/src/tools/update-cli.js.map +1 -0
- package/dist/src/tools/vm-action.d.ts +6 -6
- package/dist/src/tools/vm-action.d.ts.map +1 -1
- package/dist/src/tools/vm-action.js +3 -1
- package/dist/src/tools/vm-action.js.map +1 -1
- package/dist/src/types/mcp.d.ts +5 -1
- package/dist/src/types/mcp.d.ts.map +1 -1
- package/dist/src/types/mcp.js +14 -0
- package/dist/src/types/mcp.js.map +1 -1
- package/dist/src/types/proxmox.d.ts +1 -0
- package/dist/src/types/proxmox.d.ts.map +1 -1
- package/dist/src/utils/formatters.d.ts +7 -0
- package/dist/src/utils/formatters.d.ts.map +1 -1
- package/dist/src/utils/formatters.js +48 -5
- package/dist/src/utils/formatters.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call Telemetry Appliance Diagnostics Collector
|
|
3
|
+
*
|
|
4
|
+
* Aggregates diagnostic telemetry across HTTP /api/health, Prometheus /metrics,
|
|
5
|
+
* Oban job queues, active alarms, and Postgres database health assertions.
|
|
6
|
+
*/
|
|
7
|
+
import { Agent, request } from "undici";
|
|
8
|
+
import { ApplianceSshExecutor } from "../appliance/executor.js";
|
|
9
|
+
import { formatBytes, logger } from "../utils/index.js";
|
|
10
|
+
export class ApplianceDiagnosticsCollector {
|
|
11
|
+
insecureAgent;
|
|
12
|
+
constructor() {
|
|
13
|
+
this.insecureAgent = new Agent({
|
|
14
|
+
connect: {
|
|
15
|
+
rejectUnauthorized: false
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Run full multi-subsystem diagnostic collection on target appliance.
|
|
21
|
+
*/
|
|
22
|
+
async collect(options, vmCredentials) {
|
|
23
|
+
const startTime = Date.now();
|
|
24
|
+
const targetIp = options.targetIp;
|
|
25
|
+
const httpPort = options.httpPort ?? 443;
|
|
26
|
+
const sshPort = options.sshPort ?? 2222;
|
|
27
|
+
const timeoutMs = options.timeoutMs ?? 15000;
|
|
28
|
+
let httpHealth;
|
|
29
|
+
let prometheus;
|
|
30
|
+
let alarms;
|
|
31
|
+
let oban;
|
|
32
|
+
let sqlHealth;
|
|
33
|
+
// 1. HTTP /api/health
|
|
34
|
+
if (options.includeHttpHealth !== false) {
|
|
35
|
+
httpHealth = await this.collectHttpHealth(targetIp, httpPort, timeoutMs);
|
|
36
|
+
}
|
|
37
|
+
// 2. Prometheus /metrics
|
|
38
|
+
if (options.includePrometheus !== false) {
|
|
39
|
+
prometheus = await this.collectPrometheusMetrics(targetIp, httpPort, timeoutMs);
|
|
40
|
+
}
|
|
41
|
+
// 3. Oban, Alarms, and SQL via Mediated SSH CLI / Database if credentials available
|
|
42
|
+
const needsSsh = (options.includeAlarms !== false) || (options.includeOban !== false) || (options.includeSqlHealth !== false);
|
|
43
|
+
if (needsSsh && vmCredentials) {
|
|
44
|
+
const sshData = await this.collectSshDiagnostics(targetIp, sshPort, vmCredentials, timeoutMs, options);
|
|
45
|
+
if (options.includeAlarms !== false)
|
|
46
|
+
alarms = sshData.alarms;
|
|
47
|
+
if (options.includeOban !== false)
|
|
48
|
+
oban = sshData.oban;
|
|
49
|
+
if (options.includeSqlHealth !== false)
|
|
50
|
+
sqlHealth = sshData.sqlHealth;
|
|
51
|
+
}
|
|
52
|
+
else if (needsSsh) {
|
|
53
|
+
// Synthesize fallback from Prometheus metrics if SSH credentials not supplied
|
|
54
|
+
if (options.includeOban !== false && prometheus) {
|
|
55
|
+
oban = {
|
|
56
|
+
status: (prometheus.obanFetchableDepth ?? 0) > 500 ? "backlogged" : "healthy",
|
|
57
|
+
fetchableDepth: prometheus.obanFetchableDepth ?? 0,
|
|
58
|
+
executingCount: 0,
|
|
59
|
+
availableCount: prometheus.obanFetchableDepth ?? 0,
|
|
60
|
+
retryableCount: 0,
|
|
61
|
+
discarded7dCount: 0,
|
|
62
|
+
cancelledCount: 0,
|
|
63
|
+
pausedQueues: [],
|
|
64
|
+
queues: []
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Determine overall status
|
|
69
|
+
let overallStatus = "healthy";
|
|
70
|
+
const issues = [];
|
|
71
|
+
if (httpHealth && !httpHealth.isReachable) {
|
|
72
|
+
overallStatus = "unreachable";
|
|
73
|
+
issues.push(`HTTP endpoint unreachable (${httpHealth.error || "Connection refused"})`);
|
|
74
|
+
}
|
|
75
|
+
else if (httpHealth && httpHealth.statusCode >= 500) {
|
|
76
|
+
overallStatus = "critical";
|
|
77
|
+
issues.push(`HTTP /api/health returned ${httpHealth.statusCode}`);
|
|
78
|
+
}
|
|
79
|
+
if (alarms && (alarms.p0Count > 0)) {
|
|
80
|
+
overallStatus = "critical";
|
|
81
|
+
issues.push(`${alarms.p0Count} active P0 Critical Alarms`);
|
|
82
|
+
}
|
|
83
|
+
else if (alarms && (alarms.p1Count > 0)) {
|
|
84
|
+
if (overallStatus !== "critical")
|
|
85
|
+
overallStatus = "degraded";
|
|
86
|
+
issues.push(`${alarms.p1Count} active P1 Major Alarms`);
|
|
87
|
+
}
|
|
88
|
+
if (oban && oban.status === "backlogged") {
|
|
89
|
+
if (overallStatus !== "critical")
|
|
90
|
+
overallStatus = "degraded";
|
|
91
|
+
issues.push(`Oban fetchable backlog is high (${oban.fetchableDepth} jobs)`);
|
|
92
|
+
}
|
|
93
|
+
if (prometheus && prometheus.ectoPoolBusy !== undefined && prometheus.ectoPoolSize !== undefined) {
|
|
94
|
+
if (prometheus.ectoPoolSize > 0 && prometheus.ectoPoolBusy >= prometheus.ectoPoolSize) {
|
|
95
|
+
if (overallStatus !== "critical")
|
|
96
|
+
overallStatus = "degraded";
|
|
97
|
+
issues.push(`Ecto database connection pool is 100% saturated (${prometheus.ectoPoolBusy}/${prometheus.ectoPoolSize})`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const duration = Date.now() - startTime;
|
|
101
|
+
const summary = issues.length === 0
|
|
102
|
+
? `All appliance subsystems are operational and healthy (${duration}ms).`
|
|
103
|
+
: `Appliance state is ${overallStatus.toUpperCase()}: ${issues.join("; ")}`;
|
|
104
|
+
return {
|
|
105
|
+
targetIp,
|
|
106
|
+
timestamp: new Date().toISOString(),
|
|
107
|
+
overallStatus,
|
|
108
|
+
summary,
|
|
109
|
+
httpHealth,
|
|
110
|
+
prometheus,
|
|
111
|
+
alarms,
|
|
112
|
+
oban,
|
|
113
|
+
sqlHealth,
|
|
114
|
+
diagnosticsDurationMs: duration
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Collect HTTP /api/health status and payload.
|
|
119
|
+
*/
|
|
120
|
+
async collectHttpHealth(targetIp, port, timeoutMs) {
|
|
121
|
+
const endpoint = `https://${targetIp}:${port}/api/health`;
|
|
122
|
+
const start = Date.now();
|
|
123
|
+
try {
|
|
124
|
+
const res = await request(endpoint, {
|
|
125
|
+
method: "GET",
|
|
126
|
+
dispatcher: this.insecureAgent,
|
|
127
|
+
headersTimeout: timeoutMs,
|
|
128
|
+
bodyTimeout: timeoutMs
|
|
129
|
+
});
|
|
130
|
+
const latencyMs = Date.now() - start;
|
|
131
|
+
const statusCode = res.statusCode;
|
|
132
|
+
const text = await res.body.text();
|
|
133
|
+
let details;
|
|
134
|
+
try {
|
|
135
|
+
details = JSON.parse(text);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
details = { raw: text.slice(0, 500) };
|
|
139
|
+
}
|
|
140
|
+
let status = "ok";
|
|
141
|
+
if (statusCode === 200) {
|
|
142
|
+
status = "ok";
|
|
143
|
+
}
|
|
144
|
+
else if (statusCode === 503) {
|
|
145
|
+
status = "degraded";
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
status = "unhealthy";
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
endpoint,
|
|
152
|
+
statusCode,
|
|
153
|
+
latencyMs,
|
|
154
|
+
isReachable: true,
|
|
155
|
+
status,
|
|
156
|
+
details
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
161
|
+
return {
|
|
162
|
+
endpoint,
|
|
163
|
+
statusCode: 0,
|
|
164
|
+
latencyMs: Date.now() - start,
|
|
165
|
+
isReachable: false,
|
|
166
|
+
status: "unreachable",
|
|
167
|
+
error: msg
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Collect and parse Prometheus /metrics text exposition format.
|
|
173
|
+
*/
|
|
174
|
+
async collectPrometheusMetrics(targetIp, port, timeoutMs) {
|
|
175
|
+
const endpoint = `https://${targetIp}:${port}/metrics`;
|
|
176
|
+
try {
|
|
177
|
+
const res = await request(endpoint, {
|
|
178
|
+
method: "GET",
|
|
179
|
+
dispatcher: this.insecureAgent,
|
|
180
|
+
headersTimeout: timeoutMs,
|
|
181
|
+
bodyTimeout: timeoutMs
|
|
182
|
+
});
|
|
183
|
+
if (res.statusCode !== 200) {
|
|
184
|
+
return {
|
|
185
|
+
endpoint,
|
|
186
|
+
isAvailable: false,
|
|
187
|
+
error: `HTTP ${res.statusCode} from /metrics`
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
const text = await res.body.text();
|
|
191
|
+
return this.parsePrometheusMetricsText(text, endpoint);
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
195
|
+
return {
|
|
196
|
+
endpoint,
|
|
197
|
+
isAvailable: false,
|
|
198
|
+
error: msg
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Parse Prometheus metrics text exposition into typed metrics object.
|
|
204
|
+
*/
|
|
205
|
+
parsePrometheusMetricsText(text, endpoint) {
|
|
206
|
+
let beamMemoryBytes;
|
|
207
|
+
let etsMemoryBytes;
|
|
208
|
+
let processCount;
|
|
209
|
+
let obanFetchableDepth;
|
|
210
|
+
let ectoPoolSize;
|
|
211
|
+
let ectoPoolBusy;
|
|
212
|
+
let ectoPoolIdle;
|
|
213
|
+
const ctAnalyticalLaneBacklog = {};
|
|
214
|
+
let sampleCount = 0;
|
|
215
|
+
const lines = text.split("\n");
|
|
216
|
+
for (const rawLine of lines) {
|
|
217
|
+
const line = rawLine.trim();
|
|
218
|
+
if (!line || line.startsWith("#"))
|
|
219
|
+
continue;
|
|
220
|
+
// Parse metric line format: metric_name{label="val",...} 1234
|
|
221
|
+
const match = line.match(/^([a-zA-Z_:][a-zA-Z0-9_:]*)(?:\{([^}]+)\})?\s+([0-9.eE+-]+)/);
|
|
222
|
+
if (!match)
|
|
223
|
+
continue;
|
|
224
|
+
const metricName = match[1];
|
|
225
|
+
const labelsStr = match[2] || "";
|
|
226
|
+
const value = parseFloat(match[3]);
|
|
227
|
+
if (isNaN(value))
|
|
228
|
+
continue;
|
|
229
|
+
sampleCount++;
|
|
230
|
+
// Erlang VM Process Count
|
|
231
|
+
if (metricName === "erlang_vm_process_count" || metricName === "beam_process_count") {
|
|
232
|
+
processCount = Math.round(value);
|
|
233
|
+
}
|
|
234
|
+
// Memory: Total BEAM
|
|
235
|
+
if (metricName === "erlang_vm_memory_total" || metricName === "erlang_vm_memory_bytes_total") {
|
|
236
|
+
beamMemoryBytes = Math.round(value);
|
|
237
|
+
}
|
|
238
|
+
// Memory: ETS Tables
|
|
239
|
+
if (metricName === "erlang_vm_memory_ets_tables" || (metricName === "erlang_vm_memory_bytes" && labelsStr.includes('kind="ets"'))) {
|
|
240
|
+
etsMemoryBytes = Math.round(value);
|
|
241
|
+
}
|
|
242
|
+
// Oban Fetchable Depth & Analytical Lane Backlog
|
|
243
|
+
if (metricName === "ct_analytical_lane_backlog_depth" || metricName === "oban_backlog_depth") {
|
|
244
|
+
const queueMatch = labelsStr.match(/queue="([^"]+)"/);
|
|
245
|
+
const queue = queueMatch ? queueMatch[1] : "default";
|
|
246
|
+
ctAnalyticalLaneBacklog[queue] = value;
|
|
247
|
+
obanFetchableDepth = (obanFetchableDepth || 0) + value;
|
|
248
|
+
}
|
|
249
|
+
// Oban job state counts
|
|
250
|
+
if (metricName === "oban_jobs_state_total" && labelsStr.includes('state="available"')) {
|
|
251
|
+
obanFetchableDepth = (obanFetchableDepth || 0) + value;
|
|
252
|
+
}
|
|
253
|
+
// Ecto connection pool
|
|
254
|
+
if (metricName === "ecto_pool_size" || (metricName === "ecto_pool_connections" && labelsStr.includes('state="total"'))) {
|
|
255
|
+
ectoPoolSize = Math.round(value);
|
|
256
|
+
}
|
|
257
|
+
if (metricName === "ecto_pool_busy" || (metricName === "ecto_pool_connections" && labelsStr.includes('state="busy"'))) {
|
|
258
|
+
ectoPoolBusy = Math.round(value);
|
|
259
|
+
}
|
|
260
|
+
if (metricName === "ecto_pool_idle" || (metricName === "ecto_pool_connections" && labelsStr.includes('state="idle"'))) {
|
|
261
|
+
ectoPoolIdle = Math.round(value);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
endpoint,
|
|
266
|
+
isAvailable: true,
|
|
267
|
+
beamMemoryBytes,
|
|
268
|
+
beamMemoryFormatted: beamMemoryBytes ? formatBytes(beamMemoryBytes) : undefined,
|
|
269
|
+
etsMemoryBytes,
|
|
270
|
+
etsMemoryFormatted: etsMemoryBytes ? formatBytes(etsMemoryBytes) : undefined,
|
|
271
|
+
processCount,
|
|
272
|
+
obanFetchableDepth: obanFetchableDepth ?? 0,
|
|
273
|
+
ectoPoolSize,
|
|
274
|
+
ectoPoolBusy,
|
|
275
|
+
ectoPoolIdle,
|
|
276
|
+
ctAnalyticalLaneBacklog: Object.keys(ctAnalyticalLaneBacklog).length > 0 ? ctAnalyticalLaneBacklog : undefined,
|
|
277
|
+
rawMetricsCount: sampleCount
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Execute mediated SSH query for deep DB, Oban, and Alarm state.
|
|
282
|
+
*/
|
|
283
|
+
async collectSshDiagnostics(targetIp, sshPort, vmCredentials, timeoutMs, options) {
|
|
284
|
+
const executor = new ApplianceSshExecutor();
|
|
285
|
+
// Run SQL query in database container to retrieve composite JSON report
|
|
286
|
+
const sqlQuery = `
|
|
287
|
+
SELECT json_build_object(
|
|
288
|
+
'alarms', (
|
|
289
|
+
SELECT coalesce(json_agg(t), '[]'::json) FROM (
|
|
290
|
+
SELECT id, severity, title, fingerprint, inserted_at
|
|
291
|
+
FROM alarm_events
|
|
292
|
+
WHERE resolved_at IS NULL
|
|
293
|
+
ORDER BY inserted_at DESC
|
|
294
|
+
LIMIT 20
|
|
295
|
+
) t
|
|
296
|
+
),
|
|
297
|
+
'oban', (
|
|
298
|
+
SELECT coalesce(json_agg(t), '[]'::json) FROM (
|
|
299
|
+
SELECT state, queue, count(*)::int as count
|
|
300
|
+
FROM oban_jobs
|
|
301
|
+
GROUP BY state, queue
|
|
302
|
+
) t
|
|
303
|
+
),
|
|
304
|
+
'sql_activity', (
|
|
305
|
+
SELECT coalesce(json_agg(t), '[]'::json) FROM (
|
|
306
|
+
SELECT state, count(*)::int as count
|
|
307
|
+
FROM pg_stat_activity
|
|
308
|
+
WHERE datname = current_database()
|
|
309
|
+
GROUP BY state
|
|
310
|
+
) t
|
|
311
|
+
),
|
|
312
|
+
'long_queries', (
|
|
313
|
+
SELECT count(*)::int
|
|
314
|
+
FROM pg_stat_activity
|
|
315
|
+
WHERE state = 'active' AND now() - query_start > interval '30 seconds'
|
|
316
|
+
)
|
|
317
|
+
);
|
|
318
|
+
`.trim().replace(/\n/g, " ");
|
|
319
|
+
try {
|
|
320
|
+
const execResult = await executor.execute({
|
|
321
|
+
targetIp,
|
|
322
|
+
port: sshPort,
|
|
323
|
+
commandType: "db_diagnostics",
|
|
324
|
+
timeoutMs
|
|
325
|
+
});
|
|
326
|
+
if (execResult.exitCode !== 0 || !execResult.stdout) {
|
|
327
|
+
return {
|
|
328
|
+
alarms: { totalActive: 0, p0Count: 0, p1Count: 0, p2Count: 0, firingAlarms: [], status: "clear", error: "Database query exited with non-zero status" },
|
|
329
|
+
oban: { status: "healthy", fetchableDepth: 0, executingCount: 0, availableCount: 0, retryableCount: 0, discarded7dCount: 0, cancelledCount: 0, pausedQueues: [], queues: [] },
|
|
330
|
+
sqlHealth: { status: "healthy", totalConnections: 0, activeQueriesCount: 0, idleConnectionsCount: 0, idleInTransactionCount: 0, longRunningQueriesCount: 0, autovacuumLocksCount: 0 }
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
let parsed = {};
|
|
334
|
+
try {
|
|
335
|
+
parsed = JSON.parse(execResult.stdout.trim());
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
return {};
|
|
339
|
+
}
|
|
340
|
+
// 1. Process Alarms
|
|
341
|
+
const rawAlarms = Array.isArray(parsed.alarms) ? parsed.alarms : [];
|
|
342
|
+
let p0Count = 0;
|
|
343
|
+
let p1Count = 0;
|
|
344
|
+
let p2Count = 0;
|
|
345
|
+
const firingAlarms = [];
|
|
346
|
+
for (const a of rawAlarms) {
|
|
347
|
+
const sev = String(a.severity || "").toLowerCase();
|
|
348
|
+
if (sev === "p0" || sev === "critical")
|
|
349
|
+
p0Count++;
|
|
350
|
+
else if (sev === "p1" || sev === "major")
|
|
351
|
+
p1Count++;
|
|
352
|
+
else
|
|
353
|
+
p2Count++;
|
|
354
|
+
firingAlarms.push({
|
|
355
|
+
id: a.id,
|
|
356
|
+
severity: sev || "p2",
|
|
357
|
+
title: a.title || "Unlabeled Alarm",
|
|
358
|
+
fingerprint: a.fingerprint,
|
|
359
|
+
insertedAt: a.inserted_at
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
const alarmStatus = p0Count > 0 ? "critical" : (p1Count > 0 ? "warning" : "clear");
|
|
363
|
+
// 2. Process Oban
|
|
364
|
+
const rawOban = Array.isArray(parsed.oban) ? parsed.oban : [];
|
|
365
|
+
let executingCount = 0;
|
|
366
|
+
let availableCount = 0;
|
|
367
|
+
let retryableCount = 0;
|
|
368
|
+
let discarded7dCount = 0;
|
|
369
|
+
let cancelledCount = 0;
|
|
370
|
+
const queues = [];
|
|
371
|
+
for (const item of rawOban) {
|
|
372
|
+
const count = Number(item.count) || 0;
|
|
373
|
+
const state = String(item.state || "").toLowerCase();
|
|
374
|
+
const queue = String(item.queue || "default");
|
|
375
|
+
queues.push({ queue, state, count });
|
|
376
|
+
if (state === "executing")
|
|
377
|
+
executingCount += count;
|
|
378
|
+
else if (state === "available")
|
|
379
|
+
availableCount += count;
|
|
380
|
+
else if (state === "retryable")
|
|
381
|
+
retryableCount += count;
|
|
382
|
+
else if (state === "discarded")
|
|
383
|
+
discarded7dCount += count;
|
|
384
|
+
else if (state === "cancelled")
|
|
385
|
+
cancelledCount += count;
|
|
386
|
+
}
|
|
387
|
+
const fetchableDepth = availableCount + executingCount;
|
|
388
|
+
let obanStatus = "healthy";
|
|
389
|
+
if (fetchableDepth > 1000)
|
|
390
|
+
obanStatus = "backlogged";
|
|
391
|
+
else if (retryableCount > 20)
|
|
392
|
+
obanStatus = "degraded";
|
|
393
|
+
// 3. Process SQL Activity
|
|
394
|
+
const rawActivity = Array.isArray(parsed.sql_activity) ? parsed.sql_activity : [];
|
|
395
|
+
let activeQueriesCount = 0;
|
|
396
|
+
let idleConnectionsCount = 0;
|
|
397
|
+
let idleInTransactionCount = 0;
|
|
398
|
+
let totalConnections = 0;
|
|
399
|
+
for (const act of rawActivity) {
|
|
400
|
+
const count = Number(act.count) || 0;
|
|
401
|
+
const state = String(act.state || "").toLowerCase();
|
|
402
|
+
totalConnections += count;
|
|
403
|
+
if (state === "active")
|
|
404
|
+
activeQueriesCount += count;
|
|
405
|
+
else if (state === "idle")
|
|
406
|
+
idleConnectionsCount += count;
|
|
407
|
+
else if (state.includes("idle in transaction"))
|
|
408
|
+
idleInTransactionCount += count;
|
|
409
|
+
}
|
|
410
|
+
const longRunningQueriesCount = Number(parsed.long_queries) || 0;
|
|
411
|
+
let sqlStatus = "healthy";
|
|
412
|
+
if (longRunningQueriesCount > 5 || idleInTransactionCount > 5)
|
|
413
|
+
sqlStatus = "contended";
|
|
414
|
+
return {
|
|
415
|
+
alarms: {
|
|
416
|
+
totalActive: rawAlarms.length,
|
|
417
|
+
p0Count,
|
|
418
|
+
p1Count,
|
|
419
|
+
p2Count,
|
|
420
|
+
firingAlarms,
|
|
421
|
+
status: alarmStatus
|
|
422
|
+
},
|
|
423
|
+
oban: {
|
|
424
|
+
status: obanStatus,
|
|
425
|
+
fetchableDepth,
|
|
426
|
+
executingCount,
|
|
427
|
+
availableCount,
|
|
428
|
+
retryableCount,
|
|
429
|
+
discarded7dCount,
|
|
430
|
+
cancelledCount,
|
|
431
|
+
pausedQueues: [],
|
|
432
|
+
queues
|
|
433
|
+
},
|
|
434
|
+
sqlHealth: {
|
|
435
|
+
status: sqlStatus,
|
|
436
|
+
totalConnections,
|
|
437
|
+
activeQueriesCount,
|
|
438
|
+
idleConnectionsCount,
|
|
439
|
+
idleInTransactionCount,
|
|
440
|
+
longRunningQueriesCount,
|
|
441
|
+
autovacuumLocksCount: 0
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
catch (err) {
|
|
446
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
447
|
+
logger.warn(`Failed to collect SSH database diagnostics: ${msg}`);
|
|
448
|
+
return {};
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
//# sourceMappingURL=collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/diagnostics/collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call Telemetry Appliance Diagnostics & Telemetry Types
|
|
3
|
+
*
|
|
4
|
+
* Defines structured report models for multi-subsystem diagnostic inspection:
|
|
5
|
+
* HTTP /api/health, Prometheus /metrics, Oban job/queue health, Active Alarms, and SQL health assertions.
|
|
6
|
+
*/
|
|
7
|
+
export interface HttpHealthReport {
|
|
8
|
+
endpoint: string;
|
|
9
|
+
statusCode: number;
|
|
10
|
+
latencyMs: number;
|
|
11
|
+
isReachable: boolean;
|
|
12
|
+
status: "ok" | "degraded" | "unhealthy" | "unreachable";
|
|
13
|
+
details?: Record<string, unknown>;
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface PrometheusMetricsReport {
|
|
17
|
+
endpoint: string;
|
|
18
|
+
isAvailable: boolean;
|
|
19
|
+
beamMemoryBytes?: number;
|
|
20
|
+
beamMemoryFormatted?: string;
|
|
21
|
+
etsMemoryBytes?: number;
|
|
22
|
+
etsMemoryFormatted?: string;
|
|
23
|
+
processCount?: number;
|
|
24
|
+
obanFetchableDepth?: number;
|
|
25
|
+
ectoPoolSize?: number;
|
|
26
|
+
ectoPoolBusy?: number;
|
|
27
|
+
ectoPoolIdle?: number;
|
|
28
|
+
ctAnalyticalLaneBacklog?: Record<string, number>;
|
|
29
|
+
rawMetricsCount?: number;
|
|
30
|
+
error?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface AlarmSummaryItem {
|
|
33
|
+
id?: string;
|
|
34
|
+
severity: "p0" | "p1" | "p2" | "info" | "warning" | "critical";
|
|
35
|
+
title: string;
|
|
36
|
+
fingerprint?: string;
|
|
37
|
+
source?: string;
|
|
38
|
+
insertedAt?: string;
|
|
39
|
+
occurrenceCount?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface AlarmHealthReport {
|
|
42
|
+
totalActive: number;
|
|
43
|
+
p0Count: number;
|
|
44
|
+
p1Count: number;
|
|
45
|
+
p2Count: number;
|
|
46
|
+
firingAlarms: AlarmSummaryItem[];
|
|
47
|
+
status: "clear" | "warning" | "critical";
|
|
48
|
+
error?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ObanQueueItem {
|
|
51
|
+
queue: string;
|
|
52
|
+
state: string;
|
|
53
|
+
count: number;
|
|
54
|
+
}
|
|
55
|
+
export interface ObanHealthReport {
|
|
56
|
+
status: "healthy" | "backlogged" | "degraded" | "paused";
|
|
57
|
+
fetchableDepth: number;
|
|
58
|
+
executingCount: number;
|
|
59
|
+
availableCount: number;
|
|
60
|
+
retryableCount: number;
|
|
61
|
+
discarded7dCount: number;
|
|
62
|
+
cancelledCount: number;
|
|
63
|
+
pausedQueues: string[];
|
|
64
|
+
queues: ObanQueueItem[];
|
|
65
|
+
error?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface SqlHealthReport {
|
|
68
|
+
status: "healthy" | "contended" | "exhausted" | "unknown";
|
|
69
|
+
totalConnections: number;
|
|
70
|
+
activeQueriesCount: number;
|
|
71
|
+
idleConnectionsCount: number;
|
|
72
|
+
idleInTransactionCount: number;
|
|
73
|
+
longRunningQueriesCount: number;
|
|
74
|
+
autovacuumLocksCount: number;
|
|
75
|
+
databaseSizeBytes?: number;
|
|
76
|
+
databaseSizeFormatted?: string;
|
|
77
|
+
error?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ApplianceDiagnosticsReport {
|
|
80
|
+
targetIp: string;
|
|
81
|
+
timestamp: string;
|
|
82
|
+
overallStatus: "healthy" | "degraded" | "critical" | "unreachable";
|
|
83
|
+
summary: string;
|
|
84
|
+
httpHealth?: HttpHealthReport;
|
|
85
|
+
prometheus?: PrometheusMetricsReport;
|
|
86
|
+
alarms?: AlarmHealthReport;
|
|
87
|
+
oban?: ObanHealthReport;
|
|
88
|
+
sqlHealth?: SqlHealthReport;
|
|
89
|
+
diagnosticsDurationMs: number;
|
|
90
|
+
}
|
|
91
|
+
export interface DiagnosticsCollectionOptions {
|
|
92
|
+
targetIp: string;
|
|
93
|
+
httpPort?: number;
|
|
94
|
+
sshPort?: number;
|
|
95
|
+
includeHttpHealth?: boolean;
|
|
96
|
+
includePrometheus?: boolean;
|
|
97
|
+
includeAlarms?: boolean;
|
|
98
|
+
includeOban?: boolean;
|
|
99
|
+
includeSqlHealth?: boolean;
|
|
100
|
+
timeoutMs?: number;
|
|
101
|
+
allowInsecureTls?: boolean;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call Telemetry Appliance Diagnostics & Telemetry Types
|
|
3
|
+
*
|
|
4
|
+
* Defines structured report models for multi-subsystem diagnostic inspection:
|
|
5
|
+
* HTTP /api/health, Prometheus /metrics, Oban job/queue health, Active Alarms, and SQL health assertions.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/diagnostics/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -84,6 +84,7 @@ export declare class EsxiDriver implements IHypervisorDriver {
|
|
|
84
84
|
readonly hostName: string;
|
|
85
85
|
readonly hypervisorType: "esxi";
|
|
86
86
|
readonly hostConfig: EsxiHostConfig;
|
|
87
|
+
readonly isMock: boolean;
|
|
87
88
|
private client;
|
|
88
89
|
private safetyEngine;
|
|
89
90
|
constructor(hostConfig: EsxiHostConfig, client?: IEsxiClient, safetyEngine?: SafetyGuardrailEngine);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/hypervisors/esxi/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/hypervisors/esxi/client.ts"],"names":[],"mappings":"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"}
|