UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

242 lines 6.82 kB
/** * Плагин метрик для CSElement * Собирает статистику производительности и использования */ import { CSElementPlugin, LifecycleHooks, PluginOptions } from '../types/plugin-interfaces'; import { CSElement } from '../core/CSElement'; /** * Типы метрик */ export declare enum MetricType { COUNTER = "counter", GAUGE = "gauge", HISTOGRAM = "histogram", TIMER = "timer" } /** * Метрика */ export interface Metric { name: string; type: MetricType; value: number; timestamp: number; tags?: Record<string, string>; description?: string; } /** * Гистограмма для измерения распределения значений */ export interface Histogram { count: number; sum: number; min: number; max: number; avg: number; buckets: { [key: string]: number; }; percentiles: { [key: string]: number; }; } /** * Таймер для измерения времени выполнения */ export interface Timer { name: string; startTime: number; endTime?: number; duration?: number; tags?: Record<string, string>; } /** * Статистика операций */ export interface OperationStats { totalCount: number; successCount: number; errorCount: number; totalDuration: number; averageDuration: number; minDuration: number; maxDuration: number; lastExecuted: number; histogram: Histogram; } /** * Конфигурация метрик */ export interface MetricsConfig { enabled: boolean; collectInterval: number; retentionPeriod: number; maxMetrics: number; enabledMetrics: string[]; histogramBuckets: number[]; enableTimers: boolean; enableCounters: boolean; enableGauges: boolean; } export interface FunctionStats { totalCount: number; successCount: number; errorCount: number; averageDuration: number; totalDuration: number; lastExecuted?: Date; } /** * Плагин метрик */ export declare class MetricsPlugin implements CSElementPlugin { readonly name = "MetricsPlugin"; readonly version = "1.0.0"; readonly description = "\u041F\u043B\u0430\u0433\u0438\u043D \u0434\u043B\u044F \u0441\u0431\u043E\u0440\u0430 \u043C\u0435\u0442\u0440\u0438\u043A \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438"; private config; private metrics; private counters; private gauges; private histograms; private timers; private operationStats; private functionStats; private collectTimer?; private cleanupTimer?; constructor(options?: PluginOptions); install(CSElementClass: typeof CSElement): void; getLifecycleHooks(): LifecycleHooks; /** * Увеличение счетчика */ incrementCounter(name: string, value?: number, tags?: Record<string, string>): void; /** * Установка значения датчика */ setGauge(name: string, value: number, tags?: Record<string, string>): void; /** * Запись значения в гистограмму */ recordHistogram(name: string, value: number, tags?: Record<string, string>): void; /** * Запуск таймера */ startTimer(name: string, tags?: Record<string, string>): string; /** * Остановка таймера */ stopTimer(timerId: string): number | null; /** * Измерение времени выполнения функции */ timeFunction<T>(name: string, fn: () => Promise<T>, tags?: Record<string, string>): Promise<T>; /** * Запись статистики операций */ private recordOperationStats; /** * Запись метрики */ private recordMetric; /** * Проверка, включена ли метрика */ private isMetricEnabled; /** * Получение количества элементов (заглушка) */ private getElementCount; /** * Получение глубины элемента (заглушка) */ private getElementDepth; /** * Получение всех метрик */ getAllMetrics(): Map<string, Metric[]>; /** * Получение метрик по имени */ getMetrics(name: string): Metric[]; /** * Получение последних метрик */ getLatestMetrics(limit?: number): Metric[]; /** * Получение счетчиков */ getCounters(): Map<string, number>; /** * Получение датчиков */ getGauges(): Map<string, number>; /** * Получение гистограмм */ getHistograms(): Map<string, Histogram>; /** * Получение статистики операций */ getOperationStats(): Map<string, OperationStats>; /** * Получение сводной статистики */ getSummary(): { totalMetrics: number; counters: number; gauges: number; histograms: number; activeTimers: number; operations: number; }; /** * Экспорт метрик в формате Prometheus */ exportPrometheus(): string; /** * Очистка старых метрик */ private cleanupOldMetrics; /** * Запуск таймера сбора метрик */ private startCollectionTimer; /** * Запуск таймера очистки */ private startCleanupTimer; /** * Сбор системных метрик */ private collectSystemMetrics; /** * Остановка таймеров */ private stopTimers; /** * Сброс всех метрик */ reset(): void; /** * Обновление конфигурации */ updateConfig(config: Partial<MetricsConfig>): void; /** * Получение конфигурации */ getConfig(): MetricsConfig; /** * Очистка ресурсов */ destroy(): void; measureFunction<T>(functionName: string, fn: () => Promise<T>): Promise<T>; private recordExecution; getStats(functionName: string): FunctionStats | undefined; getAllStats(): Map<string, FunctionStats>; resetStats(functionName?: string): void; } /** * Фабричная функция для создания плагина метрик */ export declare function metricsPlugin(config?: Partial<MetricsConfig>): MetricsPlugin; //# sourceMappingURL=MetricsPlugin.d.ts.map