From 184d3416717971cdf0c8b84709a7180efd5127b9 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Tue, 5 Mar 2024 11:15:04 +0000 Subject: Report the size of the guix database and WAL file Since the Guix daemon doesn't export these metrics, instrument it here. --- guix-data-service/utils.scm | 21 +++++++++++++++++++++ guix-data-service/web/controller.scm | 6 +++++- 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'guix-data-service') 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 -- cgit v1.2.3