Implement built-in Prometheus exporter in monitor
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
// Copyright (c) Vitaliy Filippov, 2019+
|
||||
// License: VNPL-1.1 (see README.md for details)
|
||||
|
||||
const fsp = require('fs').promises;
|
||||
const http = require('http');
|
||||
const https = require('https');
|
||||
|
||||
async function create_http_server(cfg, handler)
|
||||
{
|
||||
let server;
|
||||
if (cfg.mon_https_cert)
|
||||
{
|
||||
const tls = {
|
||||
key: await fsp.readFile(cfg.mon_https_key),
|
||||
cert: await fsp.readFile(cfg.mon_https_cert),
|
||||
};
|
||||
if (cfg.mon_https_ca)
|
||||
{
|
||||
tls.mon_https_ca = await fsp.readFile(cfg.mon_https_ca);
|
||||
}
|
||||
if (cfg.mon_https_client_auth)
|
||||
{
|
||||
tls.requestCert = true;
|
||||
}
|
||||
server = https.createServer(tls, handler);
|
||||
}
|
||||
else
|
||||
{
|
||||
server = http.createServer(handler);
|
||||
}
|
||||
try
|
||||
{
|
||||
server.listen(cfg.mon_http_port || 8060, cfg.mon_http_ip || undefined);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
console.error(
|
||||
'HTTP server disabled because listen at address: '+
|
||||
(cfg.mon_http_ip || '')+':'+(cfg.mon_http_port || 9090)+' failed with error: '+e
|
||||
);
|
||||
return null;
|
||||
}
|
||||
return server;
|
||||
}
|
||||
|
||||
module.exports = { create_http_server };
|
||||
Reference in New Issue
Block a user