diff --git a/src/dda/backup/monitoring.clj b/src/dda/backup/monitoring.clj index fb5700e..264158b 100644 --- a/src/dda/backup/monitoring.clj +++ b/src/dda/backup/monitoring.clj @@ -1,23 +1,49 @@ (ns dda.backup.monitoring (:require - [orchestra.core :refer [defn-spec]] - [dda.backup.monitoring.domain :as domain] - [dda.backup.infrastructure :as i])) + [orchestra.core :refer [defn-spec]] + [clojure.spec.alpha :as s] + [dda.backup.monitoring.domain :as domain] + [dda.backup.infrastructure :as i])) (def default {:url "http://prometheus-pushgateway.monitoring.svc.cluster.local:9091/metrics/job" :namespace "default" :metrics {:kube_job_status_active 0 - :kube_job_status_failed 1 + :kube_job_status_failed 0 :kube_job_status_succeeded 0}}) +(s/def ::config (s/keys :req-un [::name] + :opt-un [::url ::metrics ::namespace])) + (defn- config-w-defaults [config] (merge default config)) (defn-spec send-metrics! nil? - [config ::domain/config] + [config ::config] (let [config-2-use (config-w-defaults config) {:keys [url name]} config-2-use] (try (i/post! (str url "/" name) (domain/collect-metrics config-2-use)) (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))}})) + diff --git a/src/dda/backup/monitoring/domain.clj b/src/dda/backup/monitoring/domain.clj index da18be5..605243a 100644 --- a/src/dda/backup/monitoring/domain.clj +++ b/src/dda/backup/monitoring/domain.clj @@ -17,7 +17,7 @@ (str (->> metrics (map (fn [entry] (str (name (key entry)) - "{namespace=" namespace "}" " " + "{namespace=\"" namespace "\"}" " " (val entry)))) (st/join "\n")) "\n"))) \ No newline at end of file diff --git a/test/dda/backup/monitoring/domain_test.clj b/test/dda/backup/monitoring/domain_test.clj index 1ff2e94..8b34730 100644 --- a/test/dda/backup/monitoring/domain_test.clj +++ b/test/dda/backup/monitoring/domain_test.clj @@ -12,7 +12,7 @@ :name "name" :namespace "default" :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" :name "name" :namespace "default"