failover-sdk
Version:
One-line API failover with zero downtime. Native Rust performance with TypeScript interface.
102 lines • 3.18 kB
TypeScript
export interface MetricsSummary {
total_requests: number;
total_failures: number;
total_failovers: number;
active_connections: number;
uptime_seconds: number;
average_response_time_ms: number;
requests_per_second: number;
}
export interface ProviderMetrics {
provider: string;
requests: number;
successes: number;
failures: number;
average_response_time_ms: number;
total_response_time_ms: number;
last_request_time: number;
health_score: number;
}
export interface FailoverEvent {
timestamp: number;
from_provider: string;
to_provider: string;
reason: string;
service: string;
operation: string;
}
export interface RequestMetric {
timestamp: number;
provider: string;
service: string;
operation: string;
method: string;
status_code: number;
response_time_ms: number;
success: boolean;
}
export declare class MetricsManager {
private static initialized;
/**
* Initialize the metrics system (call once at startup)
*/
static initialize(): void;
/**
* Track a request
*/
static trackRequest(provider: string, service: string, operation: string, method: string, status_code: number, response_time_ms: number): void;
/**
* Track a failover event
*/
static trackFailover(from_provider: string, to_provider: string, reason: string, service?: string, operation?: string): void;
/**
* Get metrics summary
*/
static getSummary(): MetricsSummary;
/**
* Get provider-specific metrics
*/
static getProviderMetrics(): Record<string, ProviderMetrics>;
/**
* Get recent failover events
*/
static getFailoverEvents(): FailoverEvent[];
/**
* Get recent requests
*/
static getRecentRequests(limit?: number): RequestMetric[];
/**
* Export metrics in Prometheus format
*/
static exportPrometheus(): string;
/**
* Reset all metrics
*/
static reset(): void;
/**
* Create Express.js middleware for automatic request tracking
*/
static createExpressMiddleware(): (req: {
method: string;
path: string;
}, res: {
statusCode: number;
get: (header: string) => string | undefined;
on: (event: string, callback: () => void) => void;
}, next: () => void) => void;
}
export declare function initialize(): void;
export declare function trackRequest(provider: string, service: string, operation: string, method: string, status_code: number, response_time_ms: number): void;
export declare function trackFailover(from_provider: string, to_provider: string, reason: string): void;
export declare function getSummary(): MetricsSummary;
export declare function getProviderMetrics(): Record<string, ProviderMetrics>;
export declare function exportPrometheus(): string;
export declare function createExpressMiddleware(): (req: {
method: string;
path: string;
}, res: {
statusCode: number;
get: (header: string) => string | undefined;
on: (event: string, callback: () => void) => void;
}, next: () => void) => void;
//# sourceMappingURL=metrics.d.ts.map