aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-03-22 14:27:02 +0000
committerChristopher Baines <mail@cbaines.net>2024-03-22 14:27:02 +0000
commitccef906e8ee1f370850734f1e66fcc164ffd5dd7 (patch)
treeb934e13de2f51e47c7d54736e9f74429c483b1f6
parent1524c4d64d1e321c3cb6a5a4e3f4f77e722929ba (diff)
downloadnar-herder-ccef906e8ee1f370850734f1e66fcc164ffd5dd7.tar
nar-herder-ccef906e8ee1f370850734f1e66fcc164ffd5dd7.tar.gz
Tweak the server metrics
Remove code in guile-prometheus, and use the new process collector. Also switch to using a non-namespaced registry for these non nar-herder specific collectors.
-rw-r--r--nar-herder/server.scm67
1 files changed, 11 insertions, 56 deletions
diff --git a/nar-herder/server.scm b/nar-herder/server.scm
index b4c0ad2..745cfa5 100644
--- a/nar-herder/server.scm
+++ b/nar-herder/server.scm
@@ -86,55 +86,6 @@
(("") '())
(() '()))))
-(define (get-gc-metrics-updater registry)
- (define metrics
- `((gc-time-taken
- . ,(make-gauge-metric registry "guile_gc_time_taken"))
- (heap-size
- . ,(make-gauge-metric registry "guile_heap_size"))
- (heap-free-size
- . ,(make-gauge-metric registry "guile_heap_free_size"))
- (heap-total-allocated
- . ,(make-gauge-metric registry "guile_heap_total_allocated"))
- (heap-allocated-since-gc
- . ,(make-gauge-metric registry "guile_allocated_since_gc"))
- (protected-objects
- . ,(make-gauge-metric registry "guile_gc_protected_objects"))
- (gc-times
- . ,(make-gauge-metric registry "guile_gc_times"))))
-
- (lambda ()
- (let ((stats (gc-stats)))
- (for-each
- (match-lambda
- ((name . metric)
- (let ((value (assq-ref stats name)))
- (metric-set metric value))))
- metrics))))
-
-(define (get-port-metrics-updater registry)
- (let ((ports-metric
- (make-gauge-metric registry "guile_ports_total"))
- (fds-metric
- (make-gauge-metric registry "file_descriptors_total")))
- (lambda ()
- (let ((count 0))
- (port-for-each
- (lambda _
- (set! count (+ 1 count))))
-
- (metric-set ports-metric count))
-
- (metric-set
- fds-metric
- (length
- ;; In theory 'scandir' cannot return #f, but in practice,
- ;; we've seen it before.
- (or (scandir "/proc/self/fd"
- (lambda (file)
- (not (member file '("." "..")))))
- '()))))))
-
(define (serve-fixed-output-file input compression proc)
;; TODO It's hard with fold-archive from (guix serialization) to
;; read just the singular file from the archive, so the following
@@ -234,17 +185,20 @@
(= (string-length str) 40)
(string-suffix? ".narinfo" str)))
+ (define plain-metrics-registry
+ (make-metrics-registry))
+
(define gc-metrics-updater
- (get-gc-metrics-updater metrics-registry))
+ (get-gc-metrics-updater plain-metrics-registry))
- (define port-metrics-updater
- (get-port-metrics-updater metrics-registry))
+ (define process-metrics-updater
+ (get-process-metrics-updater plain-metrics-registry))
(define guile-time-metrics-updater
(let ((internal-real-time
- (make-gauge-metric metrics-registry "guile_internal_real_time"))
+ (make-gauge-metric plain-metrics-registry "guile_internal_real_time"))
(internal-run-time
- (make-gauge-metric metrics-registry "guile_internal_run_time")))
+ (make-gauge-metric plain-metrics-registry "guile_internal_run_time")))
(lambda ()
(metric-set internal-real-time
(get-internal-real-time))
@@ -530,7 +484,7 @@
#f))
(((or 'HEAD 'GET) "metrics")
(gc-metrics-updater)
- (port-metrics-updater)
+ (process-metrics-updater)
(guile-time-metrics-updater)
(increment-request-metric "metrics" "200")
@@ -540,7 +494,8 @@
(vary . (accept))))
(call-with-output-string
(lambda (port)
- (write-metrics metrics-registry port)))))
+ (write-metrics metrics-registry port)
+ (write-metrics plain-metrics-registry port)))))
(_
(increment-request-metric "unhandled" "404")