Skip to content

Commit

Permalink
Merge pull request #9 from life-research/release/0.2.0-rc
Browse files Browse the repository at this point in the history
Release/0.2.0 rc
  • Loading branch information
DiCanio authored Oct 22, 2019
2 parents c444d9d + 8f5eb32 commit 977c433
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 38 deletions.
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(defproject datomic-tx-metrics "0.1.0"
(defproject datomic-tx-metrics "0.2.0"
:description "Containing a callback handler for collecting Datomic Transactor + JVM metrics for consumption (e.g. by Prometheus) using a web endpoint offered by the included web server."
:dependencies
[[aleph "0.4.6"]
Expand Down
102 changes: 65 additions & 37 deletions src/datomic_tx_metrics/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
"Number of segments in the Datomic object cache."
{:namespace "datomic"})

(prom/defgauge object-cache-requests
"Number of requests to the Datomic object cache."
{:namespace "datomic"})

(prom/defgauge remote-peers
"Number of remote peers connected."
{:namespace "datomic"})
Expand Down Expand Up @@ -158,6 +162,7 @@
(.register alarms)
(.register available-ram-megabytes)
(.register object-cache-size)
(.register object-cache-requests)
(.register remote-peers)
(.register successful-metric-reports)
(.register transacted-datoms-total)
Expand Down Expand Up @@ -195,14 +200,17 @@
(defn tx-metrics-callback-handler
"Called by Datomic transactor transferring its metrics."
[tx-metrics]
(when-let [{:keys [sum]} (:AlarmIndexingJobFailed tx-metrics)]
(prom/set! alarms "index-job-failed" sum))
(if-let [{:keys [sum]} (:AlarmIndexingJobFailed tx-metrics)]
(prom/set! alarms "index-job-failed" sum)
(prom/set! alarms "index-job-failed" 0))

(when-let [{:keys [sum]} (:AlarmBackPressure tx-metrics)]
(prom/set! alarms "back-pressure" sum))
(prom/set! alarms "back-pressure" sum)
(prom/set! alarms "back-pressure" 0))

(when-let [{:keys [sum]} (:AlarmUnhandledException tx-metrics)]
(prom/set! alarms "unhandled-exception" sum))
(prom/set! alarms "unhandled-exception" sum)
(prom/set! alarms "unhandled-exception" 0))

(->> (keys tx-metrics)
(filter
Expand Down Expand Up @@ -234,8 +242,9 @@
(prom/inc! transacted-datoms-total sum)
(prom/inc! transactions-total count))

(when-let [{:keys [count]} (:TransactionBatch tx-metrics)]
(prom/set! transactions-batch count))
(if-let [{:keys [count]} (:TransactionBatch tx-metrics)]
(prom/set! transactions-batch count)
(prom/clear! transactions-batch))

(when-let [{:keys [sum]} (:TransactionBytes tx-metrics)]
(prom/inc! transacted-bytes-total sum))
Expand All @@ -249,57 +258,76 @@
(when-let [{:keys [sum]} (:LogWriteMsec tx-metrics)]
(prom/inc! transactions-write-log-msec-total sum))

(when-let [{:keys [sum]} (:Datoms tx-metrics)]
(prom/clear! datoms)
(prom/inc! datoms sum))
(if-let [{:keys [sum]} (:Datoms tx-metrics)]
(prom/set! datoms sum)
(prom/clear! datoms))

(when-let [{:keys [sum]} (:IndexDatoms tx-metrics)]
(prom/set! index-datoms sum))
; TODO: check if resetting this is actually what resembles the transactor state
(if-let [{:keys [sum]} (:IndexDatoms tx-metrics)]
(prom/set! index-datoms sum)
(prom/clear! index-datoms))

(when-let [{:keys [sum]} (:IndexSegments tx-metrics)]
(prom/set! index-segments sum))
; TODO: check if resetting this is actually what resembles the transactor state
(if-let [{:keys [sum]} (:IndexSegments tx-metrics)]
(prom/set! index-segments sum)
(prom/clear! index-segments))

(when-let [{:keys [sum]} (:IndexWrites tx-metrics)]
(prom/set! index-writes sum))
(if-let [{:keys [sum]} (:IndexWrites tx-metrics)]
(prom/set! index-writes sum)
(prom/clear! index-writes))

(when-let [{:keys [sum]} (:IndexWriteMsec tx-metrics)]
(prom/set! index-writes-msec sum))
(if-let [{:keys [sum]} (:IndexWriteMsec tx-metrics)]
(prom/set! index-writes-msec sum)
(prom/clear! index-writes-msec))

(when-let [{:keys [sum]} (:CreateEntireIndexMsec tx-metrics)]
(prom/set! index-creation-msec sum))
(if-let [{:keys [sum]} (:CreateEntireIndexMsec tx-metrics)]
(prom/set! index-creation-msec sum)
(prom/clear! index-creation-msec))

(when-let [{:keys [sum]} (:CreateFulltextIndexMsec tx-metrics)]
(prom/set! index-fulltext-creation-msec sum))
(if-let [{:keys [sum]} (:CreateFulltextIndexMsec tx-metrics)]
(prom/set! index-fulltext-creation-msec sum)
(prom/clear! index-fulltext-creation-msec))

(when-let [{:keys [sum]} (:MemoryIndexMB tx-metrics)]
(prom/set! memory-index-consumed-megabytes sum))

(when-let [{:keys [sum]} (:MemoryIndexFillMsec tx-metrics)]
(prom/set! memory-index-fill-msec sum))
(if-let [{:keys [sum]} (:MemoryIndexFillMsec tx-metrics)]
(prom/set! memory-index-fill-msec sum)
(prom/clear! memory-index-fill-msec))

(when-let [{:keys [sum count]} (:StoragePutBytes tx-metrics)]
(prom/inc! storage-write-operations-total count)
(prom/inc! storage-write-bytes-total sum))

(when-let [{:keys [sum]} (:StoragePutMsec tx-metrics)]
(prom/set! storage-write-msec sum))
(if-let [{:keys [sum]} (:StoragePutMsec tx-metrics)]
(prom/set! storage-write-msec sum)
(prom/clear! storage-write-msec))

(when-let [{:keys [sum count]} (:StorageGetBytes tx-metrics)]
(prom/inc! storage-read-operations-total count)
(prom/inc! storage-read-bytes-total sum))

(when-let [{:keys [sum]} (:StorageGetMsec tx-metrics)]
(prom/set! storage-read-msec sum))

(when-let [{:keys [sum count]} (:StorageBackoff tx-metrics)]
(prom/set! storage-backoff-msec sum)
(prom/inc! storage-backoff-retries-total count))

(when-let [{:keys [sum count]} (:ObjectCache tx-metrics)]
(prom/set! object-cache-hits-ratio (/ (double sum) count)))

(when-let [{:keys [sum]} (:GarbageSegments tx-metrics)]
(prom/set! garbage-segments sum))
(if-let [{:keys [sum]} (:StorageGetMsec tx-metrics)]
(prom/set! storage-read-msec sum)
(prom/clear! storage-read-msec))

(if-let [{:keys [sum count]} (:StorageBackoff tx-metrics)]
(do
(prom/set! storage-backoff-msec sum)
(prom/inc! storage-backoff-retries-total count))
(prom/clear! storage-backoff-msec))

(if-let [{:keys [sum count]} (:ObjectCache tx-metrics)]
(do
(prom/set! object-cache-hits-ratio (/ (double sum) count))
(prom/set! object-cache-requests sum))
(do
(prom/clear! object-cache-hits-ratio)
(prom/clear! object-cache-requests)))

(if-let [{:keys [sum]} (:GarbageSegments tx-metrics)]
(prom/set! garbage-segments sum)
(prom/clear! garbage-segments))

(when-let [{:keys [sum count]} (:HeartbeatMsec tx-metrics)]
(prom/set! heartbeats-msec sum)
Expand Down

0 comments on commit 977c433

Please sign in to comment.