mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-09-07 18:02:42 +00:00
pass tls info to prometheus.update
This commit is contained in:
parent
5eb4f55dfd
commit
692a11e51e
@ -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) {
|
||||||
|
@ -1,33 +1,33 @@
|
|||||||
const PrometheusClient = require('prom-client');
|
const PrometheusClient = require("prom-client");
|
||||||
|
|
||||||
const commonLabels = [
|
const commonLabels = [
|
||||||
'monitor_name',
|
"monitor_name",
|
||||||
'monitor_type',
|
"monitor_type",
|
||||||
'monitor_url',
|
"monitor_url",
|
||||||
'monitor_hostname',
|
"monitor_hostname",
|
||||||
'monitor_port',
|
"monitor_port",
|
||||||
]
|
]
|
||||||
|
|
||||||
const monitor_cert_days_remaining = new PrometheusClient.Gauge({
|
const monitor_cert_days_remaining = new PrometheusClient.Gauge({
|
||||||
name: 'monitor_cert_days_remaining',
|
name: "monitor_cert_days_remaining",
|
||||||
help: 'The number of days remaining until the certificate expires',
|
help: "The number of days remaining until the certificate expires",
|
||||||
labelNames: commonLabels
|
labelNames: commonLabels
|
||||||
});
|
});
|
||||||
|
|
||||||
const monitor_cert_is_valid = new PrometheusClient.Gauge({
|
const monitor_cert_is_valid = new PrometheusClient.Gauge({
|
||||||
name: 'monitor_cert_is_valid',
|
name: "monitor_cert_is_valid",
|
||||||
help: 'Is the certificate still valid? (1 = Yes, 0= No)',
|
help: "Is the certificate still valid? (1 = Yes, 0= No)",
|
||||||
labelNames: commonLabels
|
labelNames: commonLabels
|
||||||
});
|
});
|
||||||
const monitor_response_time = new PrometheusClient.Gauge({
|
const monitor_response_time = new PrometheusClient.Gauge({
|
||||||
name: 'monitor_response_time',
|
name: "monitor_response_time",
|
||||||
help: 'Monitor Response Time (ms)',
|
help: "Monitor Response Time (ms)",
|
||||||
labelNames: commonLabels
|
labelNames: commonLabels
|
||||||
});
|
});
|
||||||
|
|
||||||
const monitor_status = new PrometheusClient.Gauge({
|
const monitor_status = new PrometheusClient.Gauge({
|
||||||
name: 'monitor_status',
|
name: "monitor_status",
|
||||||
help: 'Monitor Status (1 = UP, 0= DOWN)',
|
help: "Monitor Status (1 = UP, 0= DOWN)",
|
||||||
labelNames: commonLabels
|
labelNames: commonLabels
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -44,7 +44,11 @@ class Prometheus {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
update(heartbeat) {
|
update(heartbeat, tlsInfo) {
|
||||||
|
|
||||||
|
// TODO: TLS Info here
|
||||||
|
console.log(tlsInfo)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
monitor_status.set(this.monitorLabelValues, heartbeat.status)
|
monitor_status.set(this.monitorLabelValues, heartbeat.status)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -52,7 +56,7 @@ class Prometheus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (typeof heartbeat.ping === 'number') {
|
if (typeof heartbeat.ping === "number") {
|
||||||
monitor_response_time.set(this.monitorLabelValues, heartbeat.ping)
|
monitor_response_time.set(this.monitorLabelValues, heartbeat.ping)
|
||||||
} else {
|
} else {
|
||||||
// Is it good?
|
// Is it good?
|
||||||
|
Loading…
Reference in New Issue
Block a user