fix monitoring labels

This commit is contained in:
Michael Jerger 2025-03-11 16:20:10 +01:00
parent ef8439342b
commit 3b240bea93
3 changed files with 33 additions and 7 deletions
src/dda/backup
test/dda/backup/monitoring

View file

@ -1,23 +1,49 @@
(ns dda.backup.monitoring (ns dda.backup.monitoring
(:require (:require
[orchestra.core :refer [defn-spec]] [orchestra.core :refer [defn-spec]]
[dda.backup.monitoring.domain :as domain] [clojure.spec.alpha :as s]
[dda.backup.infrastructure :as i])) [dda.backup.monitoring.domain :as domain]
[dda.backup.infrastructure :as i]))
(def default {:url "http://prometheus-pushgateway.monitoring.svc.cluster.local:9091/metrics/job" (def default {:url "http://prometheus-pushgateway.monitoring.svc.cluster.local:9091/metrics/job"
:namespace "default" :namespace "default"
:metrics {:kube_job_status_active 0 :metrics {:kube_job_status_active 0
:kube_job_status_failed 1 :kube_job_status_failed 0
:kube_job_status_succeeded 0}}) :kube_job_status_succeeded 0}})
(s/def ::config (s/keys :req-un [::name]
:opt-un [::url ::metrics ::namespace]))
(defn- config-w-defaults (defn- config-w-defaults
[config] [config]
(merge default config)) (merge default config))
(defn-spec send-metrics! nil? (defn-spec send-metrics! nil?
[config ::domain/config] [config ::config]
(let [config-2-use (config-w-defaults config) (let [config-2-use (config-w-defaults config)
{:keys [url name]} config-2-use] {:keys [url name]} config-2-use]
(try (try
(i/post! (str url "/" name) (domain/collect-metrics config-2-use)) (i/post! (str url "/" name) (domain/collect-metrics config-2-use))
(catch Exception e (println (str "Warn: unable to send log" (.getMessage e))))))) (catch Exception e (println (str "Warn: unable to send log" (.getMessage e)))))))
(defn-spec backup-start-metrics! nil?
[config ::config]
(send-metrics!
{:name "backup"
:metrics {:kube_job_status_active 1
:kube_job_status_start_time (long (/ (System/currentTimeMillis) 1000))}}))
(defn-spec backup-success-metrics! nil?
[config ::config]
(send-metrics!
{:name "backup"
:metrics {:kube_job_status_succeeded 1
:kube_job_status_completion_time (long (/ (System/currentTimeMillis) 1000))}}))
(defn-spec backup-fail-metrics! nil?
[config ::config]
(send-metrics!
{:name "backup"
:metrics {:kube_job_status_failed 1
:kube_job_status_completion_time (long (/ (System/currentTimeMillis) 1000))}}))

View file

@ -17,7 +17,7 @@
(str (str
(->> metrics (->> metrics
(map (fn [entry] (str (name (key entry)) (map (fn [entry] (str (name (key entry))
"{namespace=" namespace "}" " " "{namespace=\"" namespace "\"}" " "
(val entry)))) (val entry))))
(st/join "\n")) (st/join "\n"))
"\n"))) "\n")))

View file

@ -12,7 +12,7 @@
:name "name" :name "name"
:namespace "default" :namespace "default"
:metrics {}}))) :metrics {}})))
(is (= "metric1{namespace=default} 1\nmetric2{namespace=default} text\n" (is (= "metric1{namespace=\"default\"} 1\nmetric2{namespace=\"default\"} text\n"
(cut/collect-metrics {:url "url" (cut/collect-metrics {:url "url"
:name "name" :name "name"
:namespace "default" :namespace "default"