From 12d3d9de676f518eccf0a384d461cc4c035939b0 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 29 Nov 2020 09:09:21 +0000 Subject: Help with writing textfiles --- prometheus.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/prometheus.scm b/prometheus.scm index 68336cf..0d44377 100644 --- a/prometheus.scm +++ b/prometheus.scm @@ -27,6 +27,7 @@ #:export (make-metrics-registry metrics-registry-fetch-metric write-metrics + write-textfile make-counter-metric make-gauge-metric @@ -409,3 +410,24 @@ so that it can receive and store the metric values." value)) (metric-values metric)))) (metrics-registry-metrics-hash registry))) + +(define (write-textfile registry filename) + "Write all metrics from the given @var{registry} to @var{filename} +in the standard text based exposition format. + +For the node exporter to read the file, the @var{filename} must end +with .prom. + +This procedure takes care of atomically replacing the file." + (let* ((template (string-append filename ".XXXXXX")) + (out (mkstemp! template))) + (with-throw-handler #t + (lambda () + (chmod out(logand #o666 (lognot (umask)))) + (write-metrics registry out) + (close out) + (rename-file template filename) + #t) + (lambda (key . args) + (false-if-exception (delete-file template)))))) + -- cgit v1.2.3