pull/4616/head
Seluard 2 months ago
parent 1666659d48
commit 59511dd0ca

@ -1,7 +1,6 @@
const { MonitorType } = require("./monitor-type");
const { UP, log, DOWN, PENDING } = require("../../src/util");
const { client, v1 } = require("@datadog/datadog-api-client");
const { json } = require("express");
/**
* A DataDog class extends the MonitorType.
@ -11,41 +10,42 @@ class DataDog extends MonitorType {
name = "datadog";
/**
* @param {Object} monitor - The monitor object associated with the check.
* @param {Object} heartbeat - The heartbeat object to update.
* Run the monitoring check on the given monitor
* @param {object} monitor - The monitor object associated with the check.
* @param {object} heartbeat - The heartbeat object to update.
* @throws Will throw an error if the API call found any.
*/
async check(monitor, heartbeat) {
try {
const configurationOpts = {
authMethods: {
apiKeyAuth: monitor.datadog_api_key,
appKeyAuth: monitor.datadog_app_key
apiKeyAuth: monitor.datadog_api_key,
appKeyAuth: monitor.datadog_app_key
},
};
};
const configuration = client.createConfiguration(configurationOpts);
configuration.setServerVariables({
site: monitor.datadog_site
});
const apiInstance = new v1.MonitorsApi(configuration)
const apiInstance = new v1.MonitorsApi(configuration);
let params = {
monitorId: monitor.datadog_monitor_id,
};
let status = await apiInstance.getMonitor(params).then((data) => {
log.debug("datadog",'DataDog API called successfully');
let state = data["overallState"]
log.debug("datadog", "DataDog API called successfully");
let state = data["overallState"];
if (state === "OK") {
log.debug("datadog","UP")
log.debug("datadog", "UP");
return UP;
} else if (state === "No Data") {
log.debug("datadog","PENDING")
log.debug("datadog", "PENDING");
return PENDING;
} else {
log.debug("datadog","DOWN")
log.debug("datadog", "DOWN");
return DOWN;
}
})
heartbeat.status = status
});
heartbeat.status = status;
} catch (err) {
// trigger log function somewhere to display a notification or alert to the user (but how?)
throw new Error(`Error checking datadog monitor: ${err}`);

@ -517,4 +517,4 @@ const { RealBrowserMonitorType } = require("./monitor-types/real-browser-monitor
const { TailscalePing } = require("./monitor-types/tailscale-ping");
const { DnsMonitorType } = require("./monitor-types/dns");
const { MqttMonitorType } = require("./monitor-types/mqtt");
const { DataDog } = require("./monitor-types/datadog")
const { DataDog } = require("./monitor-types/datadog");

@ -251,11 +251,11 @@
<!-- Datadog -->
<!-- Datadog Only-->
<template v-if="monitor.type === 'datadog'">
<div class="my-3">
<label for="datadog_site" class="form-label">DataDog Site (Site parameter)</label>
<input id="datadog_site" v-model="monitor.datadog_site" type="text" class="form-control" required>
</div>
<a href="https://docs.datadoghq.com/getting_started/site/">DataDog Sites</a>
<div class="my-3">
@ -271,7 +271,6 @@
<label for="datadog_monitor_id" class="form-label">Monitor Id</label>
<input id="datadog_monitor_id" v-model="monitor.datadog_monitor_id" type="text" class="form-control" required>
</div>
</template>
<!-- Hostname -->

Loading…
Cancel
Save