aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2024-03-05 11:15:04 +0000
committerChristopher Baines <mail@cbaines.net>2024-03-05 11:15:04 +0000
commit184d3416717971cdf0c8b84709a7180efd5127b9 (patch)
tree08acd11550088164ef8241998cefa2462fe37082 /guix-data-service
parentca69d3329d57c463aef76eddc32c3172becb5c56 (diff)
downloaddata-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.scm21
-rw-r--r--guix-data-service/web/controller.scm6
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