Add lifetime to certificates monitored

This commit is contained in:
Torjus Håkestad 2025-06-03 22:40:42 +02:00
parent 0b3c06cab9
commit 8220d21ec4
Signed by: torjus
SSH Key Fingerprint: SHA256:KjAds8wHfD2mBYK2H815s/+ABcSdcIHUndwHEdSxml4
3 changed files with 19 additions and 1 deletions

View File

@ -17,7 +17,7 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp"
)
const Version = "0.1.0"
const Version = "0.1.1"
func LoadConfig() (*config.Config, error) {
path := "labmon.toml"

View File

@ -29,6 +29,13 @@ var stepCertError = promauto.NewGaugeVec(prometheus.GaugeOpts{
Help: "Error checking the certificate.",
}, []string{"cert_id"})
var stepCertLifetime = promauto.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "labmon",
Subsystem: "stepmon",
Name: "certificate_lifetime_seconds",
Help: "How long the certificate is valid in seconds.",
}, []string{"cert_id"})
type StepMonitor struct {
BaseURL string
RootID string
@ -77,6 +84,8 @@ func (sm *StepMonitor) Start() {
stepCertError.WithLabelValues(sm.RootID).Set(1)
} else {
stepCertError.WithLabelValues(sm.RootID).Set(0)
lifetime := sm.certificate.NotAfter.Sub(sm.certificate.NotBefore).Seconds()
stepCertLifetime.WithLabelValues(sm.RootID).Set(lifetime)
}
timerCertFetch.Reset(5 * time.Minute)

View File

@ -37,6 +37,13 @@ var (
Help: "Error checking the certificate.",
}, []string{"address"})
gaugeCertLifetime = promauto.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "labmon",
Subsystem: "tlsconmon",
Name: "certificate_lifetime_seconds",
Help: "How long the certificate is valid in seconds.",
}, []string{"address"})
// OTEL tracing
tracer = otel.Tracer(name)
)
@ -104,6 +111,8 @@ func (tm *TLSConnectionMonitor) Start(ctx context.Context) {
if err := tm.fetchCert(ctx); err != nil {
gaugeCertError.WithLabelValues(tm.Address).Set(1)
gaugeCertTimeLeft.WithLabelValues(tm.Address).Set(0)
lifetime := tm.cert.NotAfter.Sub(tm.cert.NotBefore).Seconds()
gaugeCertLifetime.WithLabelValues(tm.Address).Set(lifetime)
} else {
gaugeCertError.WithLabelValues(tm.Address).Set(0)
timeLeft := time.Until(tm.cert.NotAfter).Seconds()