|
|
@ -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) {
|
|
|
|