|
@ -79,6 +79,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, |
|
@ -132,7 +136,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) |
|
@ -254,7 +258,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()); |
|
|
|
|
|
|
|
@ -289,7 +293,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 = ?", [ |
|
@ -301,6 +305,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) { |
|
|