cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
242 lines • 6.82 kB
TypeScript
/**
* Плагин метрик для 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