@webda/core
Version:
Expose API with Lambda
101 lines (100 loc) • 2.38 kB
TypeScript
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>;
}