diff options
author | Christopher Baines <mail@cbaines.net> | 2022-11-29 11:09:55 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-11-29 11:09:55 +0000 |
commit | 7b69611755ac3b9132710d83a1139b4c5606578d (patch) | |
tree | 24170ea31d6efa4e5022597f5b9d6b7bd6f60500 /guix-data-service/web | |
parent | 9f05f5f4f944c75caf017f3464cef454539ab6b9 (diff) | |
download | data-service-7b69611755ac3b9132710d83a1139b4c5606578d.tar data-service-7b69611755ac3b9132710d83a1139b4c5606578d.tar.gz |
Expose metrics from pg_stats
Diffstat (limited to 'guix-data-service/web')
-rw-r--r-- | guix-data-service/web/controller.scm | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index 7aac071..988145e 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -151,6 +151,22 @@ #:labels '(name)))) pg-stat-indexes-fields)) + (pg-stats-fields '(null-frac n-distinct correlation)) + + (pg-stats-metrics (map (lambda (field) + (cons + field + (make-gauge-metric + registry + (string-append + "pg_stats_" + (string-replace-substring + (symbol->string field) + "-" + "_")) + #:labels '(table column)))) + pg-stats-fields)) + (gc-metrics-updater (get-gc-metrics-updater registry))) @@ -167,6 +183,9 @@ (pg-stat-user-indexes-metrics (with-thread-postgresql-connection fetch-pg-stat-user-indexes-metrics)) + (pg-stats-metric-values + (with-thread-postgresql-connection + fetch-pg-stats-metrics)) (load-new-guix-revision-job-metrics (with-thread-postgresql-connection select-load-new-guix-revision-job-metrics))) @@ -228,6 +247,24 @@ field-values))) pg-stat-user-indexes-metrics) + (map (lambda (field-values) + (let ((table (assq-ref field-values 'table-name)) + (column (assq-ref field-values 'column-name))) + (for-each + (match-lambda + (('table-name . _) #f) + (('column-name . _) #f) + ((_ . #f) #f) + ((field . value) + (let ((metric (or (assq-ref pg-stats-metrics field) + (error field)))) + (metric-set metric + value + #:label-values `((table . ,table) + (column . ,column)))))) + field-values))) + pg-stats-metric-values) + (for-each (match-lambda ((repository-label state count) (metric-set |