feat: added prometheus metrics support

This commit is contained in:
Rainer Killinger
2022-06-08 17:44:57 +02:00
parent 39e710e685
commit 5522ac55ac
8 changed files with 46 additions and 2 deletions

View File

@@ -59,12 +59,16 @@ export interface ConfigFile {
* List of hidden routes
*/
hiddenRoutes: string[];
/**
* Enables metrics on /metrics route
*/
metrics: boolean;
/**
* List of outdated versions
*/
outdatedVersions: string[];
/**
* Output?! TODO
* Path the generated config will be written to
*/
output: string;
/**
@@ -93,6 +97,10 @@ export interface TemplateView {
* Listener
*/
listener: string;
/**
* Local server with listener for /metrics route
*/
metrics: string;
/**
* Allow list for rate limiting
*/

View File

@@ -241,6 +241,16 @@ ${protocolHardeningParameters}
return listener;
}
/**
* Reads predefined server entry with metrics location
*/
export async function generateMetricsServer(enableMetrics: boolean): Promise<string> {
if (!enableMetrics) {
return '';
}
return asyncReadFile('./fixtures/metrics.template', 'utf8');
}
/**
* Render a mustache template file with given view object
*
@@ -300,6 +310,7 @@ export async function getTemplateView(containers: Dockerode.ContainerInfo[]): Pr
),
hiddenRoutes: (await Promise.all(hiddenRoutesPromises)).join(''),
listener: generateListener(configFile.sslFilePaths),
metrics: await generateMetricsServer(configFile.metrics),
rateLimitAllowList: generateRateLimitAllowList(configFile.rateLimitAllowList),
staticRoute: await renderTemplate(path.join('fixtures', 'staticRoute.template'), {cors}),
visibleRoutes: (await Promise.all(visibleRoutesPromises)).join(''),