Expose resource pool stats

This commit is contained in:
Christopher Baines 2023-07-09 18:06:57 +01:00
parent 899bd1387e
commit 75ef4cffd3
2 changed files with 52 additions and 20 deletions

View file

@ -174,6 +174,24 @@
#:labels '(table column)))) #:labels '(table column))))
pg-stats-fields)) pg-stats-fields))
(resource-pools
`(("normal" . ,(connection-pool))
("reserved" . ,(reserved-connection-pool))))
(resource-pool-metrics
`((resources . ,(make-gauge-metric
registry
"resource_pool_resources_total"
#:labels '(pool_name)))
(available . ,(make-gauge-metric
registry
"resource_pool_resources_available_total"
#:labels '(pool_name)))
(waiters . ,(make-gauge-metric
registry
"resource_pool_waiters_total"
#:labels '(pool_name)))))
(gc-metrics-updater (gc-metrics-updater
(get-gc-metrics-updater registry))) (get-gc-metrics-updater registry)))
@ -214,6 +232,20 @@
(reserved-connection-pool) (reserved-connection-pool)
select-load-new-guix-revision-job-metrics))) select-load-new-guix-revision-job-metrics)))
(for-each
(match-lambda
((name . pool)
(for-each
(match-lambda
((stat . value)
(metric-set
(assq-ref resource-pool-metrics stat)
value
#:label-values
`((pool_name . ,name)))))
(resource-pool-stats pool))))
resource-pools)
(for-each (match-lambda (for-each (match-lambda
((name tablespace row-estimate ((name tablespace row-estimate
table-bytes toast-bytes) table-bytes toast-bytes)

View file

@ -68,9 +68,6 @@
(define registry (define registry
(make-metrics-registry #:namespace "guixdataservice")) (make-metrics-registry #:namespace "guixdataservice"))
(define render-metrics
(make-render-metrics registry))
(%database-metrics-registry registry) (%database-metrics-registry registry)
(let ((finished? (make-condition))) (let ((finished? (make-condition)))
@ -97,26 +94,29 @@
(resource-pool-default-timeout 10)) (resource-pool-default-timeout 10))
(with-exception-handler (let ((render-metrics
(lambda (exn) (make-render-metrics registry)))
(simple-format
(current-error-port) (with-exception-handler
"\n (lambda (exn)
(simple-format
(current-error-port)
"\n
error: guix-data-service could not start: ~A error: guix-data-service could not start: ~A
Check if it's already running, or whether another process is using that Check if it's already running, or whether another process is using that
port. Also, the port used can be changed by passing the --port option.\n" port. Also, the port used can be changed by passing the --port option.\n"
exn) exn)
(primitive-exit 1)) (primitive-exit 1))
(lambda () (lambda ()
(run-server/patched (run-server/patched
(lambda (request body) (lambda (request body)
(handler request body controller (handler request body controller
secret-key-base secret-key-base
startup-completed startup-completed
render-metrics)) render-metrics))
#:host host #:host host
#:port port)) #:port port))
#:unwind? #t)) #:unwind? #t)))
(wait finished?)))) (wait finished?))))
finished?))) finished?)))