Skip to content

Commit 6604d77

Browse files
committed
Clean up and more
- Added skypuppy console log title - Fixed eslint issues - Fixed bug that altered on healthy status at start of sky puppy - Fixed bug if settings field was left out of services checkers
1 parent 137ce04 commit 6604d77

File tree

8 files changed

+132
-86
lines changed

8 files changed

+132
-86
lines changed

.eslintrc.json

-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@
9696
"new-parens": 2,
9797
"newline-after-var": [2, "always"],
9898
"no-array-constructor": 2,
99-
"no-inline-comments": 2,
10099
"no-lonely-if": 2,
101100
"no-mixed-spaces-and-tabs": 2,
102101
"no-multiple-empty-lines": [

src/alerts.js

+48-31
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
const fs = require('fs');
21
var fasquest = require('fasquest');
32
const client = {
43
https: require('https'),
@@ -104,11 +103,28 @@ class Alerts {
104103
return;
105104
}
106105
// check if status has changed
106+
107107
if (!this.alerts[alert.type][service.name]) {
108108
this.alerts[alert.type][service.name] = {
109109
status: { ...service.status, count: { ...service.status.count } }
110110
};
111+
111112
this.alerts[alert.type][service.name].status.count[alert.type]--;
113+
114+
// If sky puppy just started and the first status is healthy then don't alert.
115+
var count = this.alerts[alert.type][service.name].status.count;
116+
var total =
117+
count.healthy +
118+
count.down +
119+
count.unhealthy +
120+
count.unhealthy_response_time +
121+
count.unhealthy_status;
122+
123+
if (service.status.up === 1 && total === 0) {
124+
this.alerts[alert.type][service.name].alerted = true;
125+
console.log(service.name, 'is healthy!');
126+
return;
127+
}
112128
}
113129

114130
if (
@@ -118,7 +134,7 @@ class Alerts {
118134
!this.alerts[alert.type][service.name].alerted
119135
) {
120136
this.alerts[alert.type][service.name].alerted = true;
121-
await this._send_alert(alert, service);
137+
await this._sendAlert(alert, service);
122138
return;
123139
}
124140
} else {
@@ -146,39 +162,40 @@ class Alerts {
146162
}
147163
}
148164

149-
async _send_alert(alert, service) {
165+
async _sendAlert(alert, service) {
150166
if (this.alerters[alert.alerter]) {
151-
var overrides = alert.overrides || {};
152-
var request = { ...this.alerters[alert.alerter].request, ...overrides };
153-
154-
if (request.body) {
155-
request.body = this.nbars.transform(
156-
request.json ? JSON.stringify(request.body) : request.body,
157-
{
158-
alert_type: alert.type,
159-
service_name: service.name,
160-
message: service.status.message,
161-
timestamp: new Date().toISOString(),
162-
last_unhealthy_total_duration:
163-
service.status.last_unhealthy_total_duration || 'Unknown',
164-
last_healthy_total_duration: service.status.last_healthy ?
165-
(
166-
Number(
167-
process.hrtime.bigint() - service.status.last_healthy
168-
) / 1000000000
169-
).toFixed(2) :
170-
'Unknown'
167+
try {
168+
var overrides = alert.overrides || {};
169+
var request = { ...this.alerters[alert.alerter].request, ...overrides };
170+
171+
if (request.body) {
172+
request.body = this.nbars.transform(
173+
request.json ? JSON.stringify(request.body) : request.body,
174+
{
175+
alert_type: alert.type,
176+
service_name: service.name,
177+
message: service.status.message || '',
178+
timestamp: new Date().toISOString(),
179+
last_unhealthy_total_duration:
180+
service.status.last_unhealthy_total_duration || 'Unknown',
181+
last_healthy_total_duration: service.status.last_healthy ?
182+
(
183+
Number(
184+
process.hrtime.bigint() - service.status.last_healthy
185+
) / 1000000000
186+
).toFixed(2) :
187+
'Unknown'
188+
}
189+
);
190+
191+
if (request.json) {
192+
//console.log(request.body);
193+
request.body = JSON.parse(request.body);
171194
}
172-
);
173-
174-
if (request.json) {
175-
request.body = JSON.parse(request.body);
176195
}
177-
}
178-
//console.log(request.body)
179-
this.alerts_status[service.name] = service.status.up;
196+
//console.log(request.body)
197+
this.alerts_status[service.name] = service.status.up;
180198

181-
try {
182199
await fasquest.request(JSON.parse(JSON.stringify(request)));
183200
} catch (e) {
184201
console.log(e);

src/checkers/request.js

+2
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,14 @@ class Request {
3636
this.settings.headers[
3737
'User-Agent'
3838
] = `Sky-Puppy / ${this.config.skypuppy.version} (Health Check Service)`;
39+
//console.log(this.settings);
3940
}
4041

4142
async check() {
4243
try {
4344
var res = await fasquest.request(this.settings);
4445

46+
//console.log(res.statusCode, res.body);
4547
return {
4648
code: res.statusCode,
4749
message: res.body

src/config.js

+25
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ class Config {
3535
this.settings.skypuppy = this.settings.skypuppy || {
3636
version: this.version
3737
};
38+
39+
this.displayTitle();
40+
3841
this.saveConfig();
3942
}
4043

@@ -108,5 +111,27 @@ class Config {
108111
console.log('Saving Config');
109112
fs.writeFileSync(this.path, JSON.stringify(this.settings, null, 4));
110113
}
114+
115+
displayTitle() {
116+
var space = ' '.repeat(12 - this.settings.skypuppy.version.length);
117+
var title = `
118+
119+
(_ v${this.settings.skypuppy.version + space}_)
120+
/\\ /\\
121+
/ \\'._ (\\_/) _.'/ \\
122+
/_.''._'--('.')--'_.''._\\
123+
| \\_ / \`;=/ " \\=;\` \\ _/ |
124+
\\/ \`\\__|\`\\___/\`|__/\` \\/
125+
\` \\(/|\\)/ \`
126+
___ _ "___"
127+
/ __>| |__ _ _ | . \\ _ _ ___ ___ _ _
128+
\\__ \\| / /| | | | _/| | || . \\| . \\| | |
129+
<___/|_\\_\\\`_. | |_| \`___|| _/| _/\`_. |
130+
<___' |_| |_| <___'
131+
132+
`;
133+
134+
console.log(title);
135+
}
111136
}
112137
module.exports = Config;

src/health-check.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
const fs = require('fs');
2-
31
const Config = require('./config.js');
42
var config = new Config();
53
const Alerts = require('./alerts.js');
@@ -33,7 +31,7 @@ class HealthCheck {
3331
name: checkersKeys[i]
3432
};
3533
} catch (e) {
36-
console.error(`Failed to load ${checkersKeys[i]}!`);
34+
console.error(`Failed to load ${checkersKeys[i]}!`, e);
3735
process.exit();
3836
}
3937
}
@@ -88,7 +86,7 @@ class HealthCheck {
8886
} catch (e) {
8987
throw new Error('No service with that name.');
9088
}
91-
return null;
89+
//return null;
9290
}
9391

9492
editService(name, service) {
@@ -161,8 +159,13 @@ class HealthCheck {
161159
checkerCodeMessages = {
162160
...nService.config.checker.code_messages
163161
};
162+
} else if (checker.settings && checker.settings.code_messages) {
163+
checkerCodeMessages = {
164+
...checker.settings.code_messages
165+
};
164166
}
165167
nService.code_messages = checkerCodeMessages;
168+
//console.log(nService.code_messages);
166169
nService.checker = await checker.mod(config, nService, checkerSettings);
167170
await nService.checker.init();
168171

src/index.js

100644100755
+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ async function start() {
4242
});
4343

4444
app.ready(() => {
45-
console.log(app.printRoutes());
45+
//console.log(app.printRoutes());
4646
});
4747

4848
app.listen(

src/routes/v1/alerter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
module.exports = function (fastify, opts) {
2-
const stats = opts.stats;
1+
module.exports = function(fastify, opts) {
2+
//const stats = opts.stats;
33
const healthCheck = opts.healthCheck;
44

55
fastify.put('/alerter/:name', async (req, res) => {

test/server/test-server.js

+47-47
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
2-
const path = require('path');
3-
const url = require('url');
2+
// const path = require('path');
3+
// const url = require('url');
44
const URL = require('url').URL;
55
var options = {
66
disableRequestLogging: false,
@@ -14,42 +14,42 @@ var options = {
1414
};
1515
const app = require('fastify')(options);
1616

17-
function response(req, res) {
18-
var urlParsed = new URL(
19-
`${options.https ? 'https' : 'http'}://${options.ip}:${options.port}${
20-
req.raw.url
21-
}`
22-
);
23-
24-
if (options.log) {
25-
console.log({
26-
body: req.body,
27-
query: req.query,
28-
params: req.params,
29-
url: req.req.url,
30-
method: req.raw.method,
31-
headers: req.headers,
32-
// raw: req.raw,
33-
id: req.id,
34-
ip: req.ip,
35-
ips: req.ips,
36-
hostname: req.hostname
37-
});
38-
}
39-
res.code(200).send({
40-
body: req.body,
41-
query: req.query,
42-
params: req.params,
43-
url: req.req.url,
44-
method: req.raw.method,
45-
headers: req.headers,
46-
// raw: req.raw,
47-
id: req.id,
48-
ip: req.ip,
49-
ips: req.ips,
50-
hostname: req.hostname
51-
});
52-
}
17+
// function response(req, res) {
18+
// var urlParsed = new URL(
19+
// `${options.https ? 'https' : 'http'}://${options.ip}:${options.port}${
20+
// req.raw.url
21+
// }`
22+
// );
23+
//
24+
// if (options.log) {
25+
// console.log({
26+
// body: req.body,
27+
// query: req.query,
28+
// params: req.params,
29+
// url: req.req.url,
30+
// method: req.raw.method,
31+
// headers: req.headers,
32+
// // raw: req.raw,
33+
// id: req.id,
34+
// ip: req.ip,
35+
// ips: req.ips,
36+
// hostname: req.hostname
37+
// });
38+
// }
39+
// res.code(200).send({
40+
// body: req.body,
41+
// query: req.query,
42+
// params: req.params,
43+
// url: req.req.url,
44+
// method: req.raw.method,
45+
// headers: req.headers,
46+
// // raw: req.raw,
47+
// id: req.id,
48+
// ip: req.ip,
49+
// ips: req.ips,
50+
// hostname: req.hostname
51+
// });
52+
// }
5353
function log(req, res) {
5454
if (options.log) {
5555
console.log({
@@ -87,16 +87,16 @@ app.all('/econnreset', (req, res) => {
8787
req.req.socket.destroy();
8888
});
8989

90-
var error_flipflop = false;
90+
var errorFlipflop = false;
9191

9292
app.all('/error/flipflop', (req, res) => {
9393
log(req, res);
94-
if (!error_flipflop) {
94+
if (!errorFlipflop) {
9595
res.status(500);
96-
error_flipflop = true;
96+
errorFlipflop = true;
9797
res.send();
9898
} else {
99-
error_flipflop = false;
99+
errorFlipflop = false;
100100
res.status(200);
101101
res.send();
102102
}
@@ -121,15 +121,15 @@ app.all('/wait/random/:start/:end', async (req, res) => {
121121
res.send();
122122
});
123123

124-
var econnreset_flipflop = false;
124+
var econnresetFlipflop = false;
125125

126126
app.all('/econnreset/flipflop', (req, res) => {
127127
log(req, res);
128-
if (!econnreset_flipflop) {
128+
if (!econnresetFlipflop) {
129129
req.req.socket.destroy();
130-
econnreset_flipflop = true;
130+
econnresetFlipflop = true;
131131
} else {
132-
econnreset_flipflop = false;
132+
econnresetFlipflop = false;
133133
res.send();
134134
}
135135
});
@@ -147,7 +147,7 @@ function getRandomInt(min, max) {
147147
// app.all(['/:param1/:param2/:param3'], response);
148148
// app.all(['/:param1/:param2/:param3/:param4'], response);
149149

150-
app.put('/alert/test', (request, res) => {
150+
app.all('/alert/test', (request, res) => {
151151
console.log(
152152
`${request.body.embeds[0].title} : ${request.body.embeds[0].description}`
153153
);

0 commit comments

Comments
 (0)