Files
alighasami 3d5eaf9445
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled
first commit
2026-03-17 16:22:57 +03:30

49 lines
1.6 KiB
TypeScript

/**
* Combined observability helper that provides unified access to logs and metrics.
* The actual services are in victoria-logs.ts and victoria-metrics.ts.
*/
import type { HelperContext } from './types';
import { LogsHelper, type VictoriaLogsResult, escapeLogsQL } from './victoria-logs';
import { MetricsHelper, type VictoriaMetricsResult } from './victoria-metrics';
export { escapeLogsQL };
export { LogsHelper, type LogEntry, type LogQueryOptions } from './victoria-logs';
export {
MetricsHelper,
type MetricResult,
type WaitForMetricOptions,
type ScrapeTarget,
} from './victoria-metrics';
export class ObservabilityHelper {
readonly logs: LogsHelper;
readonly metrics: MetricsHelper;
readonly syslog: VictoriaLogsResult['meta']['syslog'];
constructor(logsMeta: VictoriaLogsResult['meta'], metricsMeta: VictoriaMetricsResult['meta']) {
this.logs = new LogsHelper(logsMeta.queryEndpoint);
this.metrics = new MetricsHelper(metricsMeta.queryEndpoint);
this.syslog = logsMeta.syslog;
}
}
export function createObservabilityHelper(ctx: HelperContext): ObservabilityHelper {
const logsResult = ctx.serviceResults.victoriaLogs as VictoriaLogsResult | undefined;
const metricsResult = ctx.serviceResults.victoriaMetrics as VictoriaMetricsResult | undefined;
if (!logsResult) {
throw new Error('VictoriaLogs service not found in context');
}
if (!metricsResult) {
throw new Error('VictoriaMetrics service not found in context');
}
return new ObservabilityHelper(logsResult.meta, metricsResult.meta);
}
declare module './types' {
interface ServiceHelpers {
observability: ObservabilityHelper;
}
}