From 3a4b96f5f214a3fa5590c37ec848a57397a14099 Mon Sep 17 00:00:00 2001 From: maxime1907 <19607336+maxime1907@users.noreply.github.com> Date: Mon, 30 Dec 2024 16:12:48 +0100 Subject: [PATCH] feat(metrics): dedicated server subscription expiration timestamp --- pkg/network/serve.go | 2 ++ .../serve_dedicated_server_subscription.go | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/pkg/network/serve.go b/pkg/network/serve.go index dad71bf..6bd44ff 100644 --- a/pkg/network/serve.go +++ b/pkg/network/serve.go @@ -30,6 +30,7 @@ func pingHandler(w http.ResponseWriter, req *http.Request) { func initializeMetrics() { prometheus.MustRegister(cloudProjectInstanceBilling) prometheus.MustRegister(dedicatedServerSubscription) + prometheus.MustRegister(dedicatedServerSubscriptionExpirationTimestamp) } func updateMetrics(ovhClient *ovh.Client) { @@ -37,6 +38,7 @@ func updateMetrics(ovhClient *ovh.Client) { updateCloudProviderInstanceBilling(ovhClient) dedicatedServerSubscription.Reset() + dedicatedServerSubscriptionExpirationTimestamp.Reset() updateDedicatedServersSubscription(ovhClient) } diff --git a/pkg/network/serve_dedicated_server_subscription.go b/pkg/network/serve_dedicated_server_subscription.go index 66491f1..7039b7f 100644 --- a/pkg/network/serve_dedicated_server_subscription.go +++ b/pkg/network/serve_dedicated_server_subscription.go @@ -18,6 +18,20 @@ var dedicatedServerSubscription = prometheus.NewGaugeVec( []string{"server_id", "status", "creation", "expiration", "engaged_up_to", "renewal_type", "renew_automatic", "renew_period", "renew_manual_payment", "renew_forced", "renew_delete_at_expiration"}, ) +var dedicatedServerSubscriptionExpirationTimestamp = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: "ovh_exporter_dedicated_server_subscription_expiration_timestamp", + Help: "Tracks the subscription expiration for OVH dedicated servers.", + }, + []string{"server_id"}, +) + +func setDedicatedServerSubscriptionExpirationTimestamp(server models.Server, amount float64) { + dedicatedServerSubscriptionExpirationTimestamp.With(prometheus.Labels{ + "server_id": server.ID, + }).Set(amount) +} + func setDedicatedServerSubscription(server models.Server, serviceinfos models.ServiceInfo, amount float64) { renewAutomatic := false if serviceinfos.Renew != nil { @@ -74,6 +88,7 @@ func updateDedicatedServerSubscription(ovhClient *ovh.Client, server models.Serv } setDedicatedServerSubscription(server, serviceInfos, 1) + setDedicatedServerSubscriptionExpirationTimestamp(server, float64(serviceInfos.Expiration.Unix())) } func updateDedicatedServersSubscription(ovhClient *ovh.Client) {