|
@ -80,6 +80,10 @@ class Monitor extends BeanModel { |
|
|
|
|
|
|
|
|
const beat = async () => { |
|
|
const beat = async () => { |
|
|
|
|
|
|
|
|
|
|
|
// Expose here for prometheus update
|
|
|
|
|
|
// undefined if not https
|
|
|
|
|
|
let tlsInfo = undefined; |
|
|
|
|
|
|
|
|
if (! previousBeat) { |
|
|
if (! previousBeat) { |
|
|
previousBeat = await R.findOne("heartbeat", " monitor_id = ? ORDER BY time DESC", [ |
|
|
previousBeat = await R.findOne("heartbeat", " monitor_id = ? ORDER BY time DESC", [ |
|
|
this.id, |
|
|
this.id, |
|
@ -133,7 +137,7 @@ class Monitor extends BeanModel { |
|
|
let certInfoStartTime = dayjs().valueOf(); |
|
|
let certInfoStartTime = dayjs().valueOf(); |
|
|
if (this.getUrl()?.protocol === "https:") { |
|
|
if (this.getUrl()?.protocol === "https:") { |
|
|
try { |
|
|
try { |
|
|
await this.updateTlsInfo(checkCertificate(res)); |
|
|
tlsInfo = await this.updateTlsInfo(checkCertificate(res)); |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
if (e.message !== "No TLS certificate in response") { |
|
|
if (e.message !== "No TLS certificate in response") { |
|
|
console.error(e.message) |
|
|
console.error(e.message) |
|
@ -255,7 +259,7 @@ class Monitor extends BeanModel { |
|
|
console.warn(`Monitor #${this.id} '${this.name}': Failing: ${bean.msg} | Type: ${this.type}`) |
|
|
console.warn(`Monitor #${this.id} '${this.name}': Failing: ${bean.msg} | Type: ${this.type}`) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
prometheus.update(bean) |
|
|
prometheus.update(bean, tlsInfo) |
|
|
|
|
|
|
|
|
io.to(this.user_id).emit("heartbeat", bean.toJSON()); |
|
|
io.to(this.user_id).emit("heartbeat", bean.toJSON()); |
|
|
|
|
|
|
|
@ -290,7 +294,7 @@ class Monitor extends BeanModel { |
|
|
/** |
|
|
/** |
|
|
* Store TLS info to database |
|
|
* Store TLS info to database |
|
|
* @param checkCertificateResult |
|
|
* @param checkCertificateResult |
|
|
* @returns {Promise<void>} |
|
|
* @returns {Promise<object>} |
|
|
*/ |
|
|
*/ |
|
|
async updateTlsInfo(checkCertificateResult) { |
|
|
async updateTlsInfo(checkCertificateResult) { |
|
|
let tls_info_bean = await R.findOne("monitor_tls_info", "monitor_id = ?", [ |
|
|
let tls_info_bean = await R.findOne("monitor_tls_info", "monitor_id = ?", [ |
|
@ -302,6 +306,8 @@ class Monitor extends BeanModel { |
|
|
} |
|
|
} |
|
|
tls_info_bean.info_json = JSON.stringify(checkCertificateResult); |
|
|
tls_info_bean.info_json = JSON.stringify(checkCertificateResult); |
|
|
await R.store(tls_info_bean); |
|
|
await R.store(tls_info_bean); |
|
|
|
|
|
|
|
|
|
|
|
return checkCertificateResult; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static async sendStats(io, monitorID, userID) { |
|
|
static async sendStats(io, monitorID, userID) { |
|
|