fix probe responses

This commit is contained in:
Simon Larsen
2023-05-14 14:30:26 +01:00
parent f15c20f6e5
commit a2f083bd12
10 changed files with 48 additions and 42 deletions

View File

@@ -31,12 +31,6 @@ export default class MonitorCriteria extends DatabaseProperty {
monitorCriteria.data = {
monitorCriteriaInstanceArray: [
MonitorCriteriaInstance.getDefaultOnlineMonitorCriteriaInstance(
{
monitorType: arg.monitorType,
monitorStatusId: arg.onlineMonitorStatusId,
}
),
MonitorCriteriaInstance.getDefaultOfflineMonitorCriteriaInstance(
{
monitorType: arg.monitorType,
@@ -44,6 +38,12 @@ export default class MonitorCriteria extends DatabaseProperty {
incidentSeverityId: arg.defaultIncidentSeverityId,
}
),
MonitorCriteriaInstance.getDefaultOnlineMonitorCriteriaInstance(
{
monitorType: arg.monitorType,
monitorStatusId: arg.onlineMonitorStatusId,
}
),
],
};
@@ -155,7 +155,7 @@ export default class MonitorCriteria extends DatabaseProperty {
): JSONObject | null {
if (value && value instanceof MonitorCriteria) {
return (value as MonitorCriteria).toJSON();
}else if (value){
} else if (value) {
return JSONFunctions.serialize(value as any);
}

View File

@@ -75,6 +75,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
description: 'This criteria cheks if the monitor is online',
};
if (
arg.monitorType === MonitorType.Website ||
arg.monitorType === MonitorType.API
) {
monitorCriteriaInstance.data.filters.push({
checkOn: CheckOn.ResponseStatusCode,
filterType: FilterType.EqualTo,
value: 200,
});
}
return monitorCriteriaInstance;
}
@@ -438,8 +449,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
): JSONObject | null {
if (value && value instanceof MonitorCriteriaInstance) {
return (value as MonitorCriteriaInstance).toJSON();
}else if(value){
return JSONFunctions.serialize(value as any);
} else if (value) {
return JSONFunctions.serialize(value as any);
}
return null;

View File

@@ -235,13 +235,10 @@ export default class MonitorStep extends DatabaseProperty {
): JSONObject | null {
if (value && value instanceof MonitorStep) {
return (value as MonitorStep).toJSON();
}
else if(value) {
} else if (value) {
return JSONFunctions.serialize(value as any);
}
return null;
}

View File

@@ -169,12 +169,10 @@ export default class MonitorSteps extends DatabaseProperty {
): JSONObject | null {
if (value && value instanceof MonitorSteps) {
return (value as MonitorSteps).toJSON();
}
else if(value) {
} else if (value) {
return JSONFunctions.serialize(value as any);
}
return null;
}
@@ -184,7 +182,6 @@ export default class MonitorSteps extends DatabaseProperty {
if (value) {
return MonitorSteps.fromJSON(value);
}
return null;
}

View File

@@ -249,6 +249,7 @@ export default class API {
}
private static getErrorResponse(error: AxiosError): HTTPErrorResponse {
if (error.response) {
return new HTTPErrorResponse(
error.response.status,

View File

@@ -58,8 +58,7 @@ export default class QueryHelper {
// construct string
const constructQuery: Function = (alias: string): string => {
let query: string = "(";
let query: string = '(';
query += rid
.map((item: string) => {

View File

@@ -20,7 +20,6 @@ RunCron(
runOnStartup: false,
},
async () => {
// run a set timeout function randomly between 1 to 5 seconds, so same probes do not hit the server at the same time
setTimeout(async () => {
@@ -61,7 +60,5 @@ RunCron(
await Promise.allSettled(monitoringPromises);
}, Math.floor(Math.random() * 5000) + 1000);
}
);

View File

@@ -46,6 +46,7 @@ export default class ApiMonitor {
return {
url: url,
requestHeaders: options.requestHeaders || {},
// if server is responding, it is online.
isOnline: true,
isSecure: url.protocol === Protocol.HTTPS,
responseTimeInMS: responseTimeInMS,

View File

@@ -109,8 +109,6 @@ router.post(
});
console.log("ITEMS LENGTH", monitors.length);
// return the list of monitors to be monitored
return Response.sendEntityArrayResponse(

View File

@@ -266,6 +266,14 @@ export default class ProbeMonitorResponseService {
probeApiIngestResponse: ProbeApiIngestResponse;
criteriaInstance: MonitorCriteriaInstance;
}): Promise<boolean> {
let finalResult: boolean = true;
if (
FilterCondition.Any === input.criteriaInstance.data?.filterCondition
) {
finalResult = false; // set to false as we need to check if any of the filters are met.
}
for (const criteriaFilter of input.criteriaInstance.data?.filters ||
[]) {
const criteriaResult: boolean =
@@ -291,11 +299,12 @@ export default class ProbeMonitorResponseService {
input.criteriaInstance.data?.filterCondition &&
criteriaResult === false
) {
return false;
finalResult = false;
break;
}
}
return false;
return finalResult;
}
private static async isMonitorInstanceCriteriaFilterMet(input: {
@@ -352,7 +361,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseTimeInMs &&
input.probeMonitorResponse.responseTimeInMs >
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -363,7 +372,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseTimeInMs &&
input.probeMonitorResponse.responseTimeInMs <
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -374,7 +383,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseTimeInMs &&
input.probeMonitorResponse.responseTimeInMs ===
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -385,7 +394,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseTimeInMs &&
input.probeMonitorResponse.responseTimeInMs !==
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -399,7 +408,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseTimeInMs &&
input.probeMonitorResponse.responseTimeInMs >=
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -412,7 +421,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseTimeInMs &&
input.probeMonitorResponse.responseTimeInMs <=
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -442,8 +451,7 @@ export default class ProbeMonitorResponseService {
if (input.criteriaFilter.filterType === FilterType.GreaterThan) {
if (
input.probeMonitorResponse.responseCode &&
input.probeMonitorResponse.responseCode >
(input.criteriaFilter.value as number)
input.probeMonitorResponse.responseCode > (value as number)
) {
return true;
}
@@ -453,8 +461,7 @@ export default class ProbeMonitorResponseService {
if (input.criteriaFilter.filterType === FilterType.LessThan) {
if (
input.probeMonitorResponse.responseCode &&
input.probeMonitorResponse.responseCode <
(input.criteriaFilter.value as number)
input.probeMonitorResponse.responseCode < (value as number)
) {
return true;
}
@@ -465,7 +472,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseCode &&
input.probeMonitorResponse.responseCode ===
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -476,7 +483,7 @@ export default class ProbeMonitorResponseService {
if (
input.probeMonitorResponse.responseCode &&
input.probeMonitorResponse.responseCode !==
(input.criteriaFilter.value as number)
(value as number)
) {
return true;
}
@@ -489,8 +496,7 @@ export default class ProbeMonitorResponseService {
) {
if (
input.probeMonitorResponse.responseCode &&
input.probeMonitorResponse.responseCode >=
(input.criteriaFilter.value as number)
input.probeMonitorResponse.responseCode >= (value as number)
) {
return true;
}
@@ -502,8 +508,7 @@ export default class ProbeMonitorResponseService {
) {
if (
input.probeMonitorResponse.responseCode &&
input.probeMonitorResponse.responseCode <=
(input.criteriaFilter.value as number)
input.probeMonitorResponse.responseCode <= (value as number)
) {
return true;
}