UNPKG

@neo-one/monitor

Version:

NEO•ONE monitoring.

103 lines (102 loc) 4.2 kB
/// <reference types="node" /> import { IncomingMessage } from 'http'; import { Context } from 'koa'; import { ReportHandler } from './ReportHandler'; import { CaptureLogOptions, CaptureMonitor, CaptureSpanLogOptions, CaptureSpanOptions, Carrier, Counter, Format, Histogram, KnownLabel, Labels, LogErrorOptions, Logger, LogLevel, LogOptions, Monitor, Report, Span, SpanContext, SpanOptions, Summary } from './types'; export interface FullLogLevelOption { readonly log: LogLevel; readonly span: LogLevel; } export interface TracerSpan { readonly log: (data: object) => void; readonly setTag: (name: string, value: string | number | boolean) => void; readonly finish: (finishTime?: number) => void; readonly context: () => SpanContext; } export interface TracerReference { readonly __tracer: undefined; } export interface TracerStartSpanOptions { readonly references?: readonly TracerReference[]; readonly tags?: object; readonly startTime?: number; } export interface Tracer { readonly startSpan: (name: string, options?: TracerStartSpanOptions) => TracerSpan; readonly childOf: (span: SpanContext | TracerSpan) => TracerReference; readonly followsFrom: (span: SpanContext | TracerSpan) => TracerReference; readonly extract: (format: Format, carrier: Carrier) => SpanContext | undefined; readonly inject: (context: SpanContext, format: Format, carrier: Carrier) => void; readonly close: (callback: () => void) => void; } export declare type Now = () => number; export interface SpanData { readonly metric?: { readonly total: Histogram | Summary; readonly error: Counter; }; readonly time: number; readonly span?: TracerSpan; readonly parent?: MonitorBase; } export interface MonitorBaseOptions { readonly service: string; readonly component: string; readonly labels?: Labels; readonly data?: Labels; readonly logger: Logger; readonly tracer?: Tracer; readonly now: Now; readonly spanLogLevel?: LogLevel; readonly span?: SpanData | void; readonly reportHandler?: ReportHandler; } export declare class MonitorBase implements Span { readonly labels: typeof KnownLabel; readonly formats: typeof Format; readonly now: Now; private readonly service; private readonly component; private mutableCurrentLabels; private mutableData; private readonly logger; private readonly spanLogLevel; private readonly tracer; private readonly span; private readonly reportHandler; constructor({ service, component, labels, data, logger, spanLogLevel, tracer, now, span, reportHandler, }: MonitorBaseOptions); nowSeconds(): number; at(component: string): Monitor; withLabels(labels: Labels): Monitor; withData(data: Labels): Monitor; forContext(_ctx: Context): Monitor; forMessage(_ctx: IncomingMessage): Monitor; log({ name, message, level, metric, error }: LogOptions): void; captureLog(func: (monitor: CaptureMonitor) => any, options: CaptureLogOptions, cloned?: boolean): any; logError({ name, message, level, error, metric }: LogErrorOptions): void; startSpan({ name, level, metric, references, trace }: SpanOptions): MonitorBase; end(error?: boolean): void; captureSpan(func: (span: MonitorBase) => any, options: CaptureSpanOptions): any; captureSpanLog(func: (span: CaptureMonitor) => any, options: CaptureSpanLogOptions): any; childOf(span: SpanContext | Monitor | void): any; followsFrom(span: SpanContext | Monitor | void): any; extract(format: Format, carrier: Carrier): SpanContext | undefined; inject(format: Format, carrier: Carrier): void; report(report: Report): void; serveMetrics(_port: number): void; close(callback: () => void): void; setLabels(labels: Labels): void; setData(data: Labels): void; hasSpan(): boolean; getSpan(): SpanData; protected closeInternal(): Promise<void>; private invokeMetric; private commonLog; private getErrorKind; private getSpanTags; private getAllRawLabels; private getAllRawData; private setSpanLabels; private getFullLevel; private clone; }