Skip to content

logicblocks/salutem

Folders and files

NameName
Last commit message
Last commit date
Dec 11, 2023
Jun 17, 2023
Dec 11, 2023
Sep 5, 2021
Dec 11, 2023
Aug 27, 2024
Dec 11, 2023
Jun 18, 2023
Dec 11, 2023
Dec 11, 2023
Dec 11, 2023
Jun 19, 2020
Dec 11, 2023
Aug 15, 2021
Jun 17, 2023
Jun 17, 2023
Dec 11, 2023
Jun 18, 2023
Aug 15, 2021
Aug 28, 2024
Jan 21, 2025
Jun 17, 2023
Jun 18, 2023
Dec 11, 2023
Sep 24, 2021
Dec 11, 2023
Dec 11, 2023

Repository files navigation

salutem

Clojars Project Clojars Downloads GitHub Contributors

A system for defining and maintaining a collection of health checks.

salutem supports:

  • both realtime and background checks
  • a registry for storing, finding and resolving checks
  • an asynchronous maintenance system for ensuring that the results of checks are kept up-to-date; and
  • notifying via callbacks after checks are evaluated.

salutem also provides check function implementations for:

  • data sources; and
  • HTTP endpoints.

Install

Add the following to your project.clj file:

[io.logicblocks/salutem.core "0.1.8"]

Documentation

Usage

(require '[salutem.core :as salutem])

(defn database-health-check-fn
  [context callback-fn]
  (callback-fn
    (salutem/unhealthy
      {:error :connection-failed})))

(defn external-service-health-check-fn
  [context callback-fn]
  (callback-fn
    (salutem/healthy
      {:latency-ms 200})))

(def registry-atom
  (atom
    (-> (salutem/empty-registry)
      (salutem/with-check
        (salutem/realtime-check :database
          database-health-check-fn
          {:salutem/timeout (salutem/duration 5 :seconds)}))
      (salutem/with-check
        (salutem/background-check :external-service
          external-service-health-check-fn
          {:salutem/time-to-re-evaluation (salutem/duration 30 :seconds)})))))

(def maintainer
  (salutem/maintain registry-atom))

(salutem/resolve-checks @registry-atom)
; => {:database
;      {:error :connection-failed
;       :salutem/status :unhealthy
;       :salutem/evaluated-at #time/instant"2021-08-18T23:39:29.234Z"}
;     :external-service 
;      {:latency-ms 200,
;       :salutem/status :healthy,
;       :salutem/evaluated-at #time/instant"2021-08-18T23:39:10.383Z"}}

; ...5 seconds later...

(salutem/resolve-checks @registry-atom)
; => {:database
;      {:error :connection-failed
;       :salutem/status :unhealthy
;       :salutem/evaluated-at #time/instant"2021-08-18T23:39:34.234Z"}
;     :external-service 
;      {:latency-ms 200,
;       :salutem/status :healthy,
;       :salutem/evaluated-at #time/instant"2021-08-18T23:39:10.383Z"}}

(salutem/shutdown maintainer)

License

Copyright © 2023 LogicBlocks Maintainers

Distributed under the terms of the MIT License.