postgresai 0.14.0-dev.39 → 0.14.0-dev.40
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/bin/postgres-ai.ts +0 -287
- package/dist/bin/postgres-ai.js +0 -263
- package/dist/bin/postgres-ai.js.map +1 -1
- package/dist/lib/config.d.ts +0 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +0 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/package.json +1 -1
- package/lib/config.ts +0 -3
- package/package.json +1 -1
- package/dist/lib/checkup-api.d.ts +0 -33
- package/dist/lib/checkup-api.d.ts.map +0 -1
- package/dist/lib/checkup-api.js +0 -187
- package/dist/lib/checkup-api.js.map +0 -1
- package/dist/lib/checkup.d.ts +0 -153
- package/dist/lib/checkup.d.ts.map +0 -1
- package/dist/lib/checkup.js +0 -536
- package/dist/lib/checkup.js.map +0 -1
- package/lib/checkup-api.ts +0 -177
- package/lib/checkup.ts +0 -622
- package/reports/A002.json +0 -23
- package/reports/A003.json +0 -3343
- package/reports/A004.json +0 -134
- package/reports/A007.json +0 -683
- package/reports/A013.json +0 -23
- package/test/checkup.test.cjs +0 -645
package/dist/lib/checkup.js
DELETED
|
@@ -1,536 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Express checkup module - generates JSON reports directly from PostgreSQL
|
|
4
|
-
* without going through Prometheus.
|
|
5
|
-
*
|
|
6
|
-
* This module reuses the same SQL queries from metrics.yml but runs them
|
|
7
|
-
* directly against the target database.
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
exports.CHECK_INFO = exports.REPORT_GENERATORS = exports.METRICS_SQL = void 0;
|
|
44
|
-
exports.parseVersionNum = parseVersionNum;
|
|
45
|
-
exports.formatBytes = formatBytes;
|
|
46
|
-
exports.getPostgresVersion = getPostgresVersion;
|
|
47
|
-
exports.getSettings = getSettings;
|
|
48
|
-
exports.getAlteredSettings = getAlteredSettings;
|
|
49
|
-
exports.getDatabaseSizes = getDatabaseSizes;
|
|
50
|
-
exports.getClusterInfo = getClusterInfo;
|
|
51
|
-
exports.createBaseReport = createBaseReport;
|
|
52
|
-
exports.generateA002 = generateA002;
|
|
53
|
-
exports.generateA003 = generateA003;
|
|
54
|
-
exports.generateA004 = generateA004;
|
|
55
|
-
exports.generateA007 = generateA007;
|
|
56
|
-
exports.generateA013 = generateA013;
|
|
57
|
-
exports.generateAllReports = generateAllReports;
|
|
58
|
-
const fs = __importStar(require("fs"));
|
|
59
|
-
const path = __importStar(require("path"));
|
|
60
|
-
const pkg = __importStar(require("../package.json"));
|
|
61
|
-
/**
|
|
62
|
-
* SQL queries derived from metrics.yml
|
|
63
|
-
* These are the same queries used by pgwatch to export metrics to Prometheus
|
|
64
|
-
*/
|
|
65
|
-
exports.METRICS_SQL = {
|
|
66
|
-
// From metrics.yml: settings metric
|
|
67
|
-
// Queries pg_settings for all configuration parameters
|
|
68
|
-
settings: `
|
|
69
|
-
SELECT
|
|
70
|
-
name,
|
|
71
|
-
setting,
|
|
72
|
-
COALESCE(unit, '') as unit,
|
|
73
|
-
category,
|
|
74
|
-
context,
|
|
75
|
-
vartype,
|
|
76
|
-
CASE
|
|
77
|
-
WHEN unit = '8kB' THEN pg_size_pretty(setting::bigint * 8192)
|
|
78
|
-
WHEN unit = 'kB' THEN pg_size_pretty(setting::bigint * 1024)
|
|
79
|
-
WHEN unit = 'MB' THEN pg_size_pretty(setting::bigint * 1024 * 1024)
|
|
80
|
-
WHEN unit = 'B' THEN pg_size_pretty(setting::bigint)
|
|
81
|
-
WHEN unit = 'ms' THEN setting || ' ms'
|
|
82
|
-
WHEN unit = 's' THEN setting || ' s'
|
|
83
|
-
WHEN unit = 'min' THEN setting || ' min'
|
|
84
|
-
ELSE setting
|
|
85
|
-
END as pretty_value,
|
|
86
|
-
source,
|
|
87
|
-
CASE WHEN source <> 'default' THEN 0 ELSE 1 END as is_default
|
|
88
|
-
FROM pg_settings
|
|
89
|
-
ORDER BY name
|
|
90
|
-
`,
|
|
91
|
-
// Altered settings - non-default values only (A007)
|
|
92
|
-
alteredSettings: `
|
|
93
|
-
SELECT
|
|
94
|
-
name,
|
|
95
|
-
setting,
|
|
96
|
-
COALESCE(unit, '') as unit,
|
|
97
|
-
category,
|
|
98
|
-
CASE
|
|
99
|
-
WHEN unit = '8kB' THEN pg_size_pretty(setting::bigint * 8192)
|
|
100
|
-
WHEN unit = 'kB' THEN pg_size_pretty(setting::bigint * 1024)
|
|
101
|
-
WHEN unit = 'MB' THEN pg_size_pretty(setting::bigint * 1024 * 1024)
|
|
102
|
-
WHEN unit = 'B' THEN pg_size_pretty(setting::bigint)
|
|
103
|
-
WHEN unit = 'ms' THEN setting || ' ms'
|
|
104
|
-
WHEN unit = 's' THEN setting || ' s'
|
|
105
|
-
WHEN unit = 'min' THEN setting || ' min'
|
|
106
|
-
ELSE setting
|
|
107
|
-
END as pretty_value
|
|
108
|
-
FROM pg_settings
|
|
109
|
-
WHERE source <> 'default'
|
|
110
|
-
ORDER BY name
|
|
111
|
-
`,
|
|
112
|
-
// Version info - extracts server_version and server_version_num
|
|
113
|
-
version: `
|
|
114
|
-
SELECT
|
|
115
|
-
name,
|
|
116
|
-
setting
|
|
117
|
-
FROM pg_settings
|
|
118
|
-
WHERE name IN ('server_version', 'server_version_num')
|
|
119
|
-
`,
|
|
120
|
-
// Database sizes (A004)
|
|
121
|
-
databaseSizes: `
|
|
122
|
-
SELECT
|
|
123
|
-
datname,
|
|
124
|
-
pg_database_size(datname) as size_bytes
|
|
125
|
-
FROM pg_database
|
|
126
|
-
WHERE datistemplate = false
|
|
127
|
-
ORDER BY size_bytes DESC
|
|
128
|
-
`,
|
|
129
|
-
// Cluster statistics (A004)
|
|
130
|
-
clusterStats: `
|
|
131
|
-
SELECT
|
|
132
|
-
sum(numbackends) as total_connections,
|
|
133
|
-
sum(xact_commit) as total_commits,
|
|
134
|
-
sum(xact_rollback) as total_rollbacks,
|
|
135
|
-
sum(blks_read) as blocks_read,
|
|
136
|
-
sum(blks_hit) as blocks_hit,
|
|
137
|
-
sum(tup_returned) as tuples_returned,
|
|
138
|
-
sum(tup_fetched) as tuples_fetched,
|
|
139
|
-
sum(tup_inserted) as tuples_inserted,
|
|
140
|
-
sum(tup_updated) as tuples_updated,
|
|
141
|
-
sum(tup_deleted) as tuples_deleted,
|
|
142
|
-
sum(deadlocks) as total_deadlocks,
|
|
143
|
-
sum(temp_files) as temp_files_created,
|
|
144
|
-
sum(temp_bytes) as temp_bytes_written
|
|
145
|
-
FROM pg_stat_database
|
|
146
|
-
WHERE datname IS NOT NULL
|
|
147
|
-
`,
|
|
148
|
-
// Connection states (A004)
|
|
149
|
-
connectionStates: `
|
|
150
|
-
SELECT
|
|
151
|
-
COALESCE(state, 'null') as state,
|
|
152
|
-
count(*) as count
|
|
153
|
-
FROM pg_stat_activity
|
|
154
|
-
GROUP BY state
|
|
155
|
-
`,
|
|
156
|
-
// Uptime info (A004)
|
|
157
|
-
uptimeInfo: `
|
|
158
|
-
SELECT
|
|
159
|
-
pg_postmaster_start_time() as start_time,
|
|
160
|
-
current_timestamp - pg_postmaster_start_time() as uptime
|
|
161
|
-
`,
|
|
162
|
-
};
|
|
163
|
-
/**
|
|
164
|
-
* Parse PostgreSQL version number into major and minor components
|
|
165
|
-
*/
|
|
166
|
-
function parseVersionNum(versionNum) {
|
|
167
|
-
if (!versionNum || versionNum.length < 6) {
|
|
168
|
-
return { major: "", minor: "" };
|
|
169
|
-
}
|
|
170
|
-
try {
|
|
171
|
-
const num = parseInt(versionNum, 10);
|
|
172
|
-
return {
|
|
173
|
-
major: Math.floor(num / 10000).toString(),
|
|
174
|
-
minor: (num % 10000).toString(),
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
catch {
|
|
178
|
-
return { major: "", minor: "" };
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Format bytes to human readable string
|
|
183
|
-
*/
|
|
184
|
-
function formatBytes(bytes) {
|
|
185
|
-
if (bytes === 0)
|
|
186
|
-
return "0 B";
|
|
187
|
-
const units = ["B", "kB", "MB", "GB", "TB", "PB"];
|
|
188
|
-
const i = Math.floor(Math.log(bytes) / Math.log(1024));
|
|
189
|
-
return `${(bytes / Math.pow(1024, i)).toFixed(2)} ${units[i]}`;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Get PostgreSQL version information
|
|
193
|
-
*/
|
|
194
|
-
async function getPostgresVersion(client) {
|
|
195
|
-
const result = await client.query(exports.METRICS_SQL.version);
|
|
196
|
-
let version = "";
|
|
197
|
-
let serverVersionNum = "";
|
|
198
|
-
for (const row of result.rows) {
|
|
199
|
-
if (row.name === "server_version") {
|
|
200
|
-
version = row.setting;
|
|
201
|
-
}
|
|
202
|
-
else if (row.name === "server_version_num") {
|
|
203
|
-
serverVersionNum = row.setting;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
const { major, minor } = parseVersionNum(serverVersionNum);
|
|
207
|
-
return {
|
|
208
|
-
version,
|
|
209
|
-
server_version_num: serverVersionNum,
|
|
210
|
-
server_major_ver: major,
|
|
211
|
-
server_minor_ver: minor,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Get all PostgreSQL settings
|
|
216
|
-
*/
|
|
217
|
-
async function getSettings(client) {
|
|
218
|
-
const result = await client.query(exports.METRICS_SQL.settings);
|
|
219
|
-
const settings = {};
|
|
220
|
-
for (const row of result.rows) {
|
|
221
|
-
settings[row.name] = {
|
|
222
|
-
setting: row.setting,
|
|
223
|
-
unit: row.unit,
|
|
224
|
-
category: row.category,
|
|
225
|
-
context: row.context,
|
|
226
|
-
vartype: row.vartype,
|
|
227
|
-
pretty_value: row.pretty_value,
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
return settings;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Get altered (non-default) PostgreSQL settings
|
|
234
|
-
*/
|
|
235
|
-
async function getAlteredSettings(client) {
|
|
236
|
-
const result = await client.query(exports.METRICS_SQL.alteredSettings);
|
|
237
|
-
const settings = {};
|
|
238
|
-
for (const row of result.rows) {
|
|
239
|
-
settings[row.name] = {
|
|
240
|
-
value: row.setting,
|
|
241
|
-
unit: row.unit,
|
|
242
|
-
category: row.category,
|
|
243
|
-
pretty_value: row.pretty_value,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
return settings;
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Get database sizes
|
|
250
|
-
*/
|
|
251
|
-
async function getDatabaseSizes(client) {
|
|
252
|
-
const result = await client.query(exports.METRICS_SQL.databaseSizes);
|
|
253
|
-
const sizes = {};
|
|
254
|
-
for (const row of result.rows) {
|
|
255
|
-
sizes[row.datname] = parseInt(row.size_bytes, 10);
|
|
256
|
-
}
|
|
257
|
-
return sizes;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Get cluster general info metrics
|
|
261
|
-
*/
|
|
262
|
-
async function getClusterInfo(client) {
|
|
263
|
-
const info = {};
|
|
264
|
-
// Get cluster statistics
|
|
265
|
-
const statsResult = await client.query(exports.METRICS_SQL.clusterStats);
|
|
266
|
-
if (statsResult.rows.length > 0) {
|
|
267
|
-
const stats = statsResult.rows[0];
|
|
268
|
-
info.total_connections = {
|
|
269
|
-
value: String(stats.total_connections || 0),
|
|
270
|
-
unit: "connections",
|
|
271
|
-
description: "Total active database connections",
|
|
272
|
-
};
|
|
273
|
-
info.total_commits = {
|
|
274
|
-
value: String(stats.total_commits || 0),
|
|
275
|
-
unit: "transactions",
|
|
276
|
-
description: "Total committed transactions",
|
|
277
|
-
};
|
|
278
|
-
info.total_rollbacks = {
|
|
279
|
-
value: String(stats.total_rollbacks || 0),
|
|
280
|
-
unit: "transactions",
|
|
281
|
-
description: "Total rolled back transactions",
|
|
282
|
-
};
|
|
283
|
-
const blocksHit = parseInt(stats.blocks_hit || "0", 10);
|
|
284
|
-
const blocksRead = parseInt(stats.blocks_read || "0", 10);
|
|
285
|
-
const totalBlocks = blocksHit + blocksRead;
|
|
286
|
-
const cacheHitRatio = totalBlocks > 0 ? ((blocksHit / totalBlocks) * 100).toFixed(2) : "0.00";
|
|
287
|
-
info.cache_hit_ratio = {
|
|
288
|
-
value: cacheHitRatio,
|
|
289
|
-
unit: "%",
|
|
290
|
-
description: "Buffer cache hit ratio",
|
|
291
|
-
};
|
|
292
|
-
info.blocks_read = {
|
|
293
|
-
value: String(blocksRead),
|
|
294
|
-
unit: "blocks",
|
|
295
|
-
description: "Total disk blocks read",
|
|
296
|
-
};
|
|
297
|
-
info.blocks_hit = {
|
|
298
|
-
value: String(blocksHit),
|
|
299
|
-
unit: "blocks",
|
|
300
|
-
description: "Total buffer cache hits",
|
|
301
|
-
};
|
|
302
|
-
info.tuples_returned = {
|
|
303
|
-
value: String(stats.tuples_returned || 0),
|
|
304
|
-
unit: "rows",
|
|
305
|
-
description: "Total rows returned by queries",
|
|
306
|
-
};
|
|
307
|
-
info.tuples_fetched = {
|
|
308
|
-
value: String(stats.tuples_fetched || 0),
|
|
309
|
-
unit: "rows",
|
|
310
|
-
description: "Total rows fetched by queries",
|
|
311
|
-
};
|
|
312
|
-
info.tuples_inserted = {
|
|
313
|
-
value: String(stats.tuples_inserted || 0),
|
|
314
|
-
unit: "rows",
|
|
315
|
-
description: "Total rows inserted",
|
|
316
|
-
};
|
|
317
|
-
info.tuples_updated = {
|
|
318
|
-
value: String(stats.tuples_updated || 0),
|
|
319
|
-
unit: "rows",
|
|
320
|
-
description: "Total rows updated",
|
|
321
|
-
};
|
|
322
|
-
info.tuples_deleted = {
|
|
323
|
-
value: String(stats.tuples_deleted || 0),
|
|
324
|
-
unit: "rows",
|
|
325
|
-
description: "Total rows deleted",
|
|
326
|
-
};
|
|
327
|
-
info.total_deadlocks = {
|
|
328
|
-
value: String(stats.total_deadlocks || 0),
|
|
329
|
-
unit: "deadlocks",
|
|
330
|
-
description: "Total deadlocks detected",
|
|
331
|
-
};
|
|
332
|
-
info.temp_files_created = {
|
|
333
|
-
value: String(stats.temp_files_created || 0),
|
|
334
|
-
unit: "files",
|
|
335
|
-
description: "Total temporary files created",
|
|
336
|
-
};
|
|
337
|
-
const tempBytes = parseInt(stats.temp_bytes_written || "0", 10);
|
|
338
|
-
info.temp_bytes_written = {
|
|
339
|
-
value: formatBytes(tempBytes),
|
|
340
|
-
unit: "bytes",
|
|
341
|
-
description: "Total temporary file bytes written",
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
// Get connection states
|
|
345
|
-
const connResult = await client.query(exports.METRICS_SQL.connectionStates);
|
|
346
|
-
for (const row of connResult.rows) {
|
|
347
|
-
const stateKey = `connections_${row.state.replace(/\s+/g, "_")}`;
|
|
348
|
-
info[stateKey] = {
|
|
349
|
-
value: String(row.count),
|
|
350
|
-
unit: "connections",
|
|
351
|
-
description: `Connections in '${row.state}' state`,
|
|
352
|
-
};
|
|
353
|
-
}
|
|
354
|
-
// Get uptime info
|
|
355
|
-
const uptimeResult = await client.query(exports.METRICS_SQL.uptimeInfo);
|
|
356
|
-
if (uptimeResult.rows.length > 0) {
|
|
357
|
-
const uptime = uptimeResult.rows[0];
|
|
358
|
-
info.start_time = {
|
|
359
|
-
value: uptime.start_time.toISOString(),
|
|
360
|
-
unit: "timestamp",
|
|
361
|
-
description: "PostgreSQL server start time",
|
|
362
|
-
};
|
|
363
|
-
info.uptime = {
|
|
364
|
-
value: uptime.uptime,
|
|
365
|
-
unit: "interval",
|
|
366
|
-
description: "Server uptime",
|
|
367
|
-
};
|
|
368
|
-
}
|
|
369
|
-
return info;
|
|
370
|
-
}
|
|
371
|
-
/**
|
|
372
|
-
* Create base report structure
|
|
373
|
-
*/
|
|
374
|
-
function createBaseReport(checkId, checkTitle, nodeName) {
|
|
375
|
-
const buildTs = resolveBuildTs();
|
|
376
|
-
return {
|
|
377
|
-
version: pkg.version || null,
|
|
378
|
-
build_ts: buildTs,
|
|
379
|
-
checkId,
|
|
380
|
-
checkTitle,
|
|
381
|
-
timestamptz: new Date().toISOString(),
|
|
382
|
-
nodes: {
|
|
383
|
-
primary: nodeName,
|
|
384
|
-
standbys: [],
|
|
385
|
-
},
|
|
386
|
-
results: {},
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
function readTextFileSafe(p) {
|
|
390
|
-
try {
|
|
391
|
-
const value = fs.readFileSync(p, "utf8").trim();
|
|
392
|
-
return value || null;
|
|
393
|
-
}
|
|
394
|
-
catch {
|
|
395
|
-
return null;
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
function resolveBuildTs() {
|
|
399
|
-
// Follow reporter.py approach: read BUILD_TS from filesystem, with env override.
|
|
400
|
-
// Default: /BUILD_TS (useful in container images).
|
|
401
|
-
const envPath = process.env.PGAI_BUILD_TS_FILE;
|
|
402
|
-
const p = (envPath && envPath.trim()) ? envPath.trim() : "/BUILD_TS";
|
|
403
|
-
const fromFile = readTextFileSafe(p);
|
|
404
|
-
if (fromFile)
|
|
405
|
-
return fromFile;
|
|
406
|
-
// Fallback for packaged CLI: allow placing BUILD_TS next to dist/ (package root).
|
|
407
|
-
// dist/lib/checkup.js => package root: dist/..
|
|
408
|
-
try {
|
|
409
|
-
const pkgRoot = path.resolve(__dirname, "..");
|
|
410
|
-
const fromPkgFile = readTextFileSafe(path.join(pkgRoot, "BUILD_TS"));
|
|
411
|
-
if (fromPkgFile)
|
|
412
|
-
return fromPkgFile;
|
|
413
|
-
}
|
|
414
|
-
catch {
|
|
415
|
-
// ignore
|
|
416
|
-
}
|
|
417
|
-
// Last resort: use package.json mtime as an approximation (non-null, stable-ish).
|
|
418
|
-
try {
|
|
419
|
-
const pkgJsonPath = path.resolve(__dirname, "..", "package.json");
|
|
420
|
-
const st = fs.statSync(pkgJsonPath);
|
|
421
|
-
return st.mtime.toISOString();
|
|
422
|
-
}
|
|
423
|
-
catch {
|
|
424
|
-
return new Date().toISOString();
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Generate A002 report - Postgres major version
|
|
429
|
-
*/
|
|
430
|
-
async function generateA002(client, nodeName = "node-01") {
|
|
431
|
-
const report = createBaseReport("A002", "Postgres major version", nodeName);
|
|
432
|
-
const postgresVersion = await getPostgresVersion(client);
|
|
433
|
-
report.results[nodeName] = {
|
|
434
|
-
data: {
|
|
435
|
-
version: postgresVersion,
|
|
436
|
-
},
|
|
437
|
-
};
|
|
438
|
-
return report;
|
|
439
|
-
}
|
|
440
|
-
/**
|
|
441
|
-
* Generate A003 report - Postgres settings
|
|
442
|
-
*/
|
|
443
|
-
async function generateA003(client, nodeName = "node-01") {
|
|
444
|
-
const report = createBaseReport("A003", "Postgres settings", nodeName);
|
|
445
|
-
const settings = await getSettings(client);
|
|
446
|
-
const postgresVersion = await getPostgresVersion(client);
|
|
447
|
-
report.results[nodeName] = {
|
|
448
|
-
data: settings,
|
|
449
|
-
postgres_version: postgresVersion,
|
|
450
|
-
};
|
|
451
|
-
return report;
|
|
452
|
-
}
|
|
453
|
-
/**
|
|
454
|
-
* Generate A004 report - Cluster information
|
|
455
|
-
*/
|
|
456
|
-
async function generateA004(client, nodeName = "node-01") {
|
|
457
|
-
const report = createBaseReport("A004", "Cluster information", nodeName);
|
|
458
|
-
const generalInfo = await getClusterInfo(client);
|
|
459
|
-
const databaseSizes = await getDatabaseSizes(client);
|
|
460
|
-
const postgresVersion = await getPostgresVersion(client);
|
|
461
|
-
report.results[nodeName] = {
|
|
462
|
-
data: {
|
|
463
|
-
general_info: generalInfo,
|
|
464
|
-
database_sizes: databaseSizes,
|
|
465
|
-
},
|
|
466
|
-
postgres_version: postgresVersion,
|
|
467
|
-
};
|
|
468
|
-
return report;
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* Generate A007 report - Altered settings
|
|
472
|
-
*/
|
|
473
|
-
async function generateA007(client, nodeName = "node-01") {
|
|
474
|
-
const report = createBaseReport("A007", "Altered settings", nodeName);
|
|
475
|
-
const alteredSettings = await getAlteredSettings(client);
|
|
476
|
-
const postgresVersion = await getPostgresVersion(client);
|
|
477
|
-
report.results[nodeName] = {
|
|
478
|
-
data: alteredSettings,
|
|
479
|
-
postgres_version: postgresVersion,
|
|
480
|
-
};
|
|
481
|
-
return report;
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Generate A013 report - Postgres minor version
|
|
485
|
-
*/
|
|
486
|
-
async function generateA013(client, nodeName = "node-01") {
|
|
487
|
-
const report = createBaseReport("A013", "Postgres minor version", nodeName);
|
|
488
|
-
const postgresVersion = await getPostgresVersion(client);
|
|
489
|
-
report.results[nodeName] = {
|
|
490
|
-
data: {
|
|
491
|
-
version: postgresVersion,
|
|
492
|
-
},
|
|
493
|
-
};
|
|
494
|
-
return report;
|
|
495
|
-
}
|
|
496
|
-
/**
|
|
497
|
-
* Available report generators
|
|
498
|
-
*/
|
|
499
|
-
exports.REPORT_GENERATORS = {
|
|
500
|
-
A002: generateA002,
|
|
501
|
-
A003: generateA003,
|
|
502
|
-
A004: generateA004,
|
|
503
|
-
A007: generateA007,
|
|
504
|
-
A013: generateA013,
|
|
505
|
-
};
|
|
506
|
-
/**
|
|
507
|
-
* Check IDs and titles
|
|
508
|
-
*/
|
|
509
|
-
exports.CHECK_INFO = {
|
|
510
|
-
A002: "Postgres major version",
|
|
511
|
-
A003: "Postgres settings",
|
|
512
|
-
A004: "Cluster information",
|
|
513
|
-
A007: "Altered settings",
|
|
514
|
-
A013: "Postgres minor version",
|
|
515
|
-
};
|
|
516
|
-
/**
|
|
517
|
-
* Generate all available reports
|
|
518
|
-
*/
|
|
519
|
-
async function generateAllReports(client, nodeName = "node-01", onProgress) {
|
|
520
|
-
const reports = {};
|
|
521
|
-
const entries = Object.entries(exports.REPORT_GENERATORS);
|
|
522
|
-
const total = entries.length;
|
|
523
|
-
let index = 0;
|
|
524
|
-
for (const [checkId, generator] of entries) {
|
|
525
|
-
index += 1;
|
|
526
|
-
onProgress?.({
|
|
527
|
-
checkId,
|
|
528
|
-
checkTitle: exports.CHECK_INFO[checkId] || checkId,
|
|
529
|
-
index,
|
|
530
|
-
total,
|
|
531
|
-
});
|
|
532
|
-
reports[checkId] = await generator(client, nodeName);
|
|
533
|
-
}
|
|
534
|
-
return reports;
|
|
535
|
-
}
|
|
536
|
-
//# sourceMappingURL=checkup.js.map
|
package/dist/lib/checkup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkup.js","sourceRoot":"","sources":["../../lib/checkup.ts"],"names":[],"mappings":"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"}
|