diff options
author | Christopher Baines <mail@cbaines.net> | 2023-09-07 15:13:56 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2023-09-07 15:13:56 +0100 |
commit | afb6b8185d4142eaaa1fc46e0971155d71b324f9 (patch) | |
tree | dfa0bdc92ccc88082b4e92ade896742480eb987f /nar-herder | |
parent | 1a91218299e948e130bcda577f19aabccd93744e (diff) | |
download | nar-herder-afb6b8185d4142eaaa1fc46e0971155d71b324f9.tar nar-herder-afb6b8185d4142eaaa1fc46e0971155d71b324f9.tar.gz |
Include metrics for ports and file descriptors
Diffstat (limited to 'nar-herder')
-rw-r--r-- | nar-herder/server.scm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/nar-herder/server.scm b/nar-herder/server.scm index 01de6d8..525d70b 100644 --- a/nar-herder/server.scm +++ b/nar-herder/server.scm @@ -21,6 +21,7 @@ #:use-module (srfi srfi-11) #:use-module (srfi srfi-34) #:use-module (srfi srfi-71) + #:use-module (ice-9 ftw) #:use-module (ice-9 iconv) #:use-module (ice-9 match) #:use-module (ice-9 threads) @@ -99,6 +100,29 @@ (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 @@ -200,6 +224,9 @@ (define gc-metrics-updater (get-gc-metrics-updater metrics-registry)) + (define port-metrics-updater + (get-port-metrics-updater metrics-registry)) + (define guile-time-metrics-updater (let ((internal-real-time (make-gauge-metric metrics-registry "guile_internal_real_time")) @@ -493,6 +520,7 @@ #f)) (((or 'HEAD 'GET) "metrics") (gc-metrics-updater) + (port-metrics-updater) (guile-time-metrics-updater) (increment-request-metric "metrics" "200") |