mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-27 06:45:26 +02:00
64 lines
2.0 KiB
JavaScript
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/`);
|
|
}
|