UNPKG

@webda/core

Version:

Expose API with Lambda

101 lines (100 loc) 2.38 kB
import * as http from "http"; import { Counter, Gauge, Histogram } from "prom-client"; import { WebContext } from "../utils/context.js"; import { Service, ServiceParameters } from "./service.js"; export declare class PrometheusParameters extends ServiceParameters { /** * If defined will launch another http server to serve the scaper */ portNumber?: number; /** * If defined along with portNumber used to bind specific address * for dedicated http server */ bind?: string; /** * @default /metrics */ url?: string; /** * Include NodeJS engine metrics * * @default true */ includeNodeMetrics: boolean; /** * Include request served by Webda * * It should generate common http_* metrics * @default true */ includeRequestMetrics: boolean; /** * Do not partition histogram with requests labels */ partitionHistogram?: boolean; /** * Labels to add */ labels?: { [key: string]: string; }; /** * Prefix to add to metrics */ prefix?: string; constructor(params: any); } /** * This service expose metrics to Prometheus * * It can use the same server or a dedicated http server * We do not currently support push-gateway * * @WebdaModda */ export declare class PrometheusService<T extends PrometheusParameters = PrometheusParameters> extends Service<T> { /** * Metrics registered */ private static requestMetricsRegistered; /** * Metrics registered */ private static nodeMetricsRegistered; metrics: { http_request_total: Counter; http_request_in_flight: Gauge; http_request_duration_milliseconds: Histogram; http_request_sizes: Histogram; http_response_sizes: Histogram; }; /** * If we expose prometheus on another port */ http?: http.Server; /** * * @param params * @returns */ loadParameters(params: any): PrometheusParameters; /** * @override */ initMetrics(): void; /** * Close the http server if exists */ stop(): Promise<void>; /** * * @returns */ resolve(): this; /** * Serve the metrics in a webda context * @param ctx */ serveMetrics(ctx: WebContext): Promise<void>; }