Skip to content

Commit

Permalink
Merge pull request #721 from mountaindude/master
Browse files Browse the repository at this point in the history
feat: Configurable headers when getting health data from Sense
  • Loading branch information
mountaindude committed Feb 17, 2024
2 parents 829c5dc + a4a27dd commit 5180d06
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 4 deletions.
2 changes: 0 additions & 2 deletions release-please-config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
{
"bootstrap-sha": "f65d47539fbf04124184cc50920652d226723f2c",
"release-as": "9.9.1",
"release-type": "node",
"prerelease": false,
"draft": true,
Expand Down
6 changes: 6 additions & 0 deletions src/config/production_template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,9 @@ Butler-SOS:
serverLocation: Asia
server_type: virtual
serverBrand: Dell
headers:
X-My-Header-1: Header value 1
X-My-Header-2: Header value 2
- host: <server2.my.domain>:4747 # Example: 10.34.3.46:4747
serverName: <server2>
serverDescription: <description>
Expand All @@ -388,4 +391,7 @@ Butler-SOS:
serverLocation: Europe
server_type: physical
serverBrand: HP
headers:
X-My-Header-3: Header value 3
X-My-Header-4: Header value 4

16 changes: 14 additions & 2 deletions src/lib/healthmetrics.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const postToInfluxdb = require('./post-to-influxdb');
const postToNewRelic = require('./post-to-new-relic');
const postToMQTT = require('./post-to-mqtt');
const serverTags = require('./servertags');
const serverHeaders = require('./serverheaders');
const prometheus = require('./prom-client');

function getCertificates(options) {
Expand All @@ -23,7 +24,7 @@ function getCertificates(options) {
return certificate;
}

function getHealthStatsFromSense(host, tags) {
function getHealthStatsFromSense(host, tags, headers) {
globals.logger.debug(`HEALTH: URL=https://${host}/engine/healthcheck/`);

const options = {};
Expand Down Expand Up @@ -74,6 +75,16 @@ function getHealthStatsFromSense(host, tags) {
maxRedirects: 5,
};

// Add any additional headers
if (headers !== null) {
// Loop over all headers defined for the current server
Object.entries(headers).forEach(([key, value]) => {
globals.logger.debug(`HEALTH: Found header: ${JSON.stringify([key, value])}`);

requestSettings.headers[key] = value;
});
}

axios
.request(requestSettings)
.then((response) => {
Expand Down Expand Up @@ -137,8 +148,9 @@ function setupHealthMetricsTimer() {
globals.logger.debug(`HEALTH: Server details: ${JSON.stringify(server)}`);

const tags = serverTags.getServerTags(server);
const headers = serverHeaders.getServerHeaders(server);

getHealthStatsFromSense(server.host, tags);
getHealthStatsFromSense(server.host, tags, headers);
});
}, globals.config.get('Butler-SOS.serversToMonitor.pollingInterval'));
}
Expand Down
31 changes: 31 additions & 0 deletions src/lib/serverheaders.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const globals = require('../globals');

function getServerHeaders(server) {
try {
const headers = {};

// Check if there are any headers for this server that should be added
if (Object.prototype.hasOwnProperty.call(server, 'headers') && server.headers !== null) {
// Loop over all headers defined for the current server
Object.entries(server.headers).forEach(([key, value]) => {
globals.logger.debug(`SERVERHEADERS: Found header: ${value}: ${value}`);

headers[key] = value;
});
}
globals.logger.debug(
`SERVERTAGS: Additional headers for server ${server.serverName}: ${JSON.stringify(
headers
)}`
);

return headers;
} catch (err) {
globals.logger.error(`SERVERTAGS: ${err}`);
return [];
}
}

module.exports = {
getServerHeaders,
};

0 comments on commit 5180d06

Please sign in to comment.