From ccef906e8ee1f370850734f1e66fcc164ffd5dd7 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 22 Mar 2024 14:27:02 +0000 Subject: 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. --- nar-herder/server.scm | 67 +++++++++------------------------------------------ 1 file changed, 11 insertions(+), 56 deletions(-) (limited to 'nar-herder') 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") -- cgit v1.2.3