|
|
@ -6,7 +6,7 @@ dayjs.extend(utc) |
|
|
|
dayjs.extend(timezone) |
|
|
|
const axios = require("axios"); |
|
|
|
const { Prometheus } = require("../prometheus"); |
|
|
|
const { debug, UP, DOWN, PENDING, flipStatus } = require("../../src/util"); |
|
|
|
const { debug, UP, DOWN, PENDING, flipStatus, TimeLogger } = require("../../src/util"); |
|
|
|
const { tcping, ping, checkCertificate, checkStatusCode } = require("../util-server"); |
|
|
|
const { R } = require("redbean-node"); |
|
|
|
const { BeanModel } = require("redbean-node/dist/bean-model"); |
|
|
@ -133,7 +133,6 @@ class Monitor extends BeanModel { |
|
|
|
bean.ping = dayjs().valueOf() - startTime; |
|
|
|
|
|
|
|
// Check certificate if https is used
|
|
|
|
|
|
|
|
let certInfoStartTime = dayjs().valueOf(); |
|
|
|
if (this.getUrl()?.protocol === "https:") { |
|
|
|
try { |
|
|
@ -311,10 +310,10 @@ class Monitor extends BeanModel { |
|
|
|
} |
|
|
|
|
|
|
|
static async sendStats(io, monitorID, userID) { |
|
|
|
Monitor.sendAvgPing(24, io, monitorID, userID); |
|
|
|
Monitor.sendUptime(24, io, monitorID, userID); |
|
|
|
Monitor.sendUptime(24 * 30, io, monitorID, userID); |
|
|
|
Monitor.sendCertInfo(io, monitorID, userID); |
|
|
|
await Monitor.sendAvgPing(24, io, monitorID, userID); |
|
|
|
await Monitor.sendUptime(24, io, monitorID, userID); |
|
|
|
await Monitor.sendUptime(24 * 30, io, monitorID, userID); |
|
|
|
await Monitor.sendCertInfo(io, monitorID, userID); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -322,6 +321,8 @@ class Monitor extends BeanModel { |
|
|
|
* @param duration : int Hours |
|
|
|
*/ |
|
|
|
static async sendAvgPing(duration, io, monitorID, userID) { |
|
|
|
const timeLogger = new TimeLogger(); |
|
|
|
|
|
|
|
let avgPing = parseInt(await R.getCell(` |
|
|
|
SELECT AVG(ping) |
|
|
|
FROM heartbeat |
|
|
@ -332,6 +333,8 @@ class Monitor extends BeanModel { |
|
|
|
monitorID, |
|
|
|
])); |
|
|
|
|
|
|
|
timeLogger.print(`[Monitor: ${monitorID}] avgPing`); |
|
|
|
|
|
|
|
io.to(userID).emit("avgPing", monitorID, avgPing); |
|
|
|
} |
|
|
|
|
|
|
@ -351,6 +354,8 @@ class Monitor extends BeanModel { |
|
|
|
* @param duration : int Hours |
|
|
|
*/ |
|
|
|
static async sendUptime(duration, io, monitorID, userID) { |
|
|
|
const timeLogger = new TimeLogger(); |
|
|
|
|
|
|
|
let sec = duration * 3600; |
|
|
|
|
|
|
|
let heartbeatList = await R.getAll(` |
|
|
@ -362,6 +367,8 @@ class Monitor extends BeanModel { |
|
|
|
monitorID, |
|
|
|
]); |
|
|
|
|
|
|
|
timeLogger.print(`[Monitor: ${monitorID}][${duration}] sendUptime`); |
|
|
|
|
|
|
|
let downtime = 0; |
|
|
|
let total = 0; |
|
|
|
let uptime; |
|
|
|