49 lines
1.6 KiB
Org Mode
49 lines
1.6 KiB
Org Mode
-*- mode: org -*-
|
|
|
|
This Guile library provides instrumentation code intended to be used
|
|
with the Prometheus time series service.
|
|
|
|
Counter, gauge and histogram metric types are supported.
|
|
|
|
This client library is still in early development, and there will be
|
|
probably be breaking changes in the future, prior to the first stable
|
|
release.
|
|
|
|
Some information on how to use this library can be found in the
|
|
docstrings of exported procedures in the prometheus.scm file.
|
|
|
|
** Web service example
|
|
|
|
The following example demonstrates a Guile web server, with some
|
|
instrumentation for the number of requests. Each time a request is
|
|
handled, the metric is instrumented. For the /metrics path, the
|
|
response is the metrics and their values. This is intended to be
|
|
scraped by Prometheus so that it can retrieve and record the metric
|
|
values.
|
|
|
|
#+BEGIN_SRC scheme
|
|
(use-modules (web server)
|
|
(web request)
|
|
(web response)
|
|
(web uri)
|
|
(prometheus))
|
|
|
|
(define my-registry (make-metrics-registry #:namespace "exampleapp"))
|
|
|
|
(define request-counter (make-counter-metric my-registry
|
|
"requests_count"))
|
|
|
|
(define (request-handler request body)
|
|
(metric-increment request-counter)
|
|
|
|
(if (equal? (split-and-decode-uri-path (uri-path (request-uri request)))
|
|
'("metrics"))
|
|
(values '((content-type . (text/plain)))
|
|
(lambda (port)
|
|
(write-metrics my-registry port)))
|
|
(values '((content-type . (text/plain)))
|
|
(lambda (port)
|
|
(display "Incrementing metric\n" port)))))
|
|
|
|
(run-server request-handler)
|
|
#+END_SRC
|