From cbc6e1b03512443a03d66414c426adb8470b5f2b Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Mon, 31 Aug 2020 19:00:52 +0100 Subject: Add more information and an example to the README --- README | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/README b/README index 29aba7e..3f99135 100644 --- a/README +++ b/README @@ -2,3 +2,48 @@ 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 -- cgit v1.2.3