Add metrics for ports and file descriptors
This commit is contained in:
parent
e8e1459769
commit
893cccf8e5
2 changed files with 30 additions and 1 deletions
|
|
@ -18,6 +18,7 @@
|
||||||
(define-module (guix-data-service utils)
|
(define-module (guix-data-service utils)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-11)
|
#:use-module (srfi srfi-11)
|
||||||
|
#:use-module (ice-9 ftw)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:use-module (ice-9 format)
|
#:use-module (ice-9 format)
|
||||||
#:use-module (ice-9 threads)
|
#:use-module (ice-9 threads)
|
||||||
|
|
@ -48,6 +49,7 @@
|
||||||
delete-duplicates/sort!
|
delete-duplicates/sort!
|
||||||
|
|
||||||
get-gc-metrics-updater
|
get-gc-metrics-updater
|
||||||
|
get-port-metrics-updater
|
||||||
|
|
||||||
call-with-sigint
|
call-with-sigint
|
||||||
run-server/patched))
|
run-server/patched))
|
||||||
|
|
@ -451,6 +453,29 @@ available. Return the resource once PROC has returned."
|
||||||
(metric-set metric value))))
|
(metric-set metric value))))
|
||||||
metrics))))
|
metrics))))
|
||||||
|
|
||||||
|
(define (get-port-metrics-updater registry)
|
||||||
|
(let ((ports-metric
|
||||||
|
(make-gauge-metric registry "guile_ports_total"))
|
||||||
|
(fds-metric
|
||||||
|
(make-gauge-metric registry "file_descriptors_total")))
|
||||||
|
(lambda ()
|
||||||
|
(let ((count 0))
|
||||||
|
(port-for-each
|
||||||
|
(lambda _
|
||||||
|
(set! count (+ 1 count))))
|
||||||
|
|
||||||
|
(metric-set ports-metric count))
|
||||||
|
|
||||||
|
(metric-set
|
||||||
|
fds-metric
|
||||||
|
(length
|
||||||
|
;; In theory 'scandir' cannot return #f, but in practice,
|
||||||
|
;; we've seen it before.
|
||||||
|
(or (scandir "/proc/self/fd"
|
||||||
|
(lambda (file)
|
||||||
|
(not (member file '("." "..")))))
|
||||||
|
'()))))))
|
||||||
|
|
||||||
;; This variant of run-server from the fibers library supports running
|
;; This variant of run-server from the fibers library supports running
|
||||||
;; multiple servers within one process.
|
;; multiple servers within one process.
|
||||||
(define run-server/patched
|
(define run-server/patched
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,10 @@
|
||||||
#:labels '(pool_name)))))
|
#:labels '(pool_name)))))
|
||||||
|
|
||||||
(gc-metrics-updater
|
(gc-metrics-updater
|
||||||
(get-gc-metrics-updater registry)))
|
(get-gc-metrics-updater registry))
|
||||||
|
|
||||||
|
(port-metrics-updater
|
||||||
|
(get-port-metrics-updater registry)))
|
||||||
|
|
||||||
(define guile-time-metrics-updater
|
(define guile-time-metrics-updater
|
||||||
(let ((internal-real-time
|
(let ((internal-real-time
|
||||||
|
|
@ -399,6 +402,7 @@
|
||||||
(or load-new-guix-revision-job-metrics '()))
|
(or load-new-guix-revision-job-metrics '()))
|
||||||
|
|
||||||
(gc-metrics-updater)
|
(gc-metrics-updater)
|
||||||
|
(port-metrics-updater)
|
||||||
(guile-time-metrics-updater)
|
(guile-time-metrics-updater)
|
||||||
|
|
||||||
(list (build-response
|
(list (build-response
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue