diff options
author | Christopher Baines <mail@cbaines.net> | 2024-03-05 11:15:04 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2024-03-05 11:15:04 +0000 |
commit | 184d3416717971cdf0c8b84709a7180efd5127b9 (patch) | |
tree | 08acd11550088164ef8241998cefa2462fe37082 /guix-data-service | |
parent | ca69d3329d57c463aef76eddc32c3172becb5c56 (diff) | |
download | data-service-184d3416717971cdf0c8b84709a7180efd5127b9.tar data-service-184d3416717971cdf0c8b84709a7180efd5127b9.tar.gz |
Report the size of the guix database and WAL file
Since the Guix daemon doesn't export these metrics, instrument it here.
Diffstat (limited to 'guix-data-service')
-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 |