n8n/packages/testing/playwright/scripts/import-victoria-data.mjs
Declan Carroll 66087e2dd5
chore: Apply biome formatting to playwright package (no-changelog) (#26586)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:47:20 +00:00

64 lines
2.0 KiB
JavaScript

#!/usr/bin/env node
/**
* Imports Victoria logs/metrics exports into local containers for analysis.
* Usage: node import-victoria-data.mjs [metrics_file] [logs_file]
* node import-victoria-data.mjs --start [metrics_file] [logs_file]
*/
import { execSync } from 'node:child_process';
import { existsSync, readFileSync } from 'node:fs';
import { setTimeout } from 'node:timers/promises';
const VM_PORT = 8428;
const VL_PORT = 9428;
const args = process.argv.slice(2);
const startContainers = args[0] === '--start';
if (startContainers) args.shift();
const metricsFile = args[0] ?? 'victoria-metrics-export.jsonl';
const logsFile = args[1] ?? 'victoria-logs-export.jsonl';
if (startContainers) {
try {
execSync(
`docker run -d --name victoria-metrics-local -p ${VM_PORT}:8428 victoriametrics/victoria-metrics:v1.115.0 -storageDataPath=/victoria-metrics-data -retentionPeriod=7d`,
{ stdio: 'ignore' },
);
} catch {}
try {
execSync(
`docker run -d --name victoria-logs-local -p ${VL_PORT}:9428 victoriametrics/victoria-logs:v1.21.0-victorialogs -storageDataPath=/victoria-logs-data -retentionPeriod=7d`,
{ stdio: 'ignore' },
);
} catch {}
await setTimeout(2000);
}
const hasMetrics = existsSync(metricsFile);
const hasLogs = existsSync(logsFile);
if (!hasMetrics && !hasLogs) {
console.log('No export files found');
process.exit(1);
}
if (hasMetrics) {
const res = await fetch(`http://localhost:${VM_PORT}/api/v1/import`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: readFileSync(metricsFile),
});
if (!res.ok) console.error(`Metrics import failed: ${res.status}`);
else console.log(`Metrics: http://localhost:${VM_PORT}/vmui/`);
}
if (hasLogs) {
const res = await fetch(`http://localhost:${VL_PORT}/insert/jsonline`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: readFileSync(logsFile),
});
if (!res.ok) console.error(`Logs import failed: ${res.status}`);
else console.log(`Logs: http://localhost:${VL_PORT}/select/vmui/`);
}