diff options
-rw-r--r-- | guix-data-service/utils.scm | 21 | ||||
-rw-r--r-- | guix-data-service/web/controller.scm | 6 |
2 files changed, 26 insertions, 1 deletions
diff --git a/guix-data-service/utils.scm b/guix-data-service/utils.scm index 351b656..d72fa55 100644 --- a/guix-data-service/utils.scm +++ b/guix-data-service/utils.scm @@ -57,6 +57,7 @@ get-gc-metrics-updater get-port-metrics-updater + get-guix-metrics-updater call-with-sigint run-server/patched @@ -628,6 +629,26 @@ available. Return the resource once PROC has returned." (not (member file '("." ".."))))) '())))))) +(define (get-guix-metrics-updater registry) + (define guix-db "/var/guix/db/db.sqlite") + (define guix-db-wal (string-append guix-db "-wal")) + + (let ((guix-db-bytes-metric + (make-gauge-metric registry "guix_db_bytes")) + (guix-db-wal-bytes-metric + (make-gauge-metric registry "guix_db_wal_bytes"))) + (lambda () + (with-exception-handler + (lambda _ + #f) + (lambda () + (metric-set guix-db-bytes-metric (stat:size (stat guix-db))) + (metric-set guix-db-wal-bytes-metric + (if (file-exists? guix-db-wal) + (stat:size (stat guix-db-wal)) + 0))) + #:unwind? #t)))) + ;; This variant of run-server from the fibers library supports running ;; multiple servers within one process. (define run-server/patched diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index 1ac081b..1fb369c 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -201,7 +201,10 @@ (get-gc-metrics-updater registry)) (port-metrics-updater - (get-port-metrics-updater registry))) + (get-port-metrics-updater registry)) + + (guix-metrics-updater + (get-guix-metrics-updater registry))) (define guile-time-metrics-updater (let ((internal-real-time @@ -437,6 +440,7 @@ (gc-metrics-updater) (port-metrics-updater) + (guix-metrics-updater) (guile-time-metrics-updater) (list (build-response |